From fbd8ddf2d33cede1dcca77be8aa1e1742f214c23 Mon Sep 17 00:00:00 2001 From: Alexandre Dantas Date: Thu, 31 Jul 2014 09:01:46 -0300 Subject: [PATCH 001/477] Change the appearance of `README` It makes sure not to keep much of a visual strain on specific distro instructions --- README.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 06d52b9..cf4a8e5 100644 --- a/README.md +++ b/README.md @@ -13,34 +13,47 @@ This terminal emulator requires Qt 5.2 or higher to run. ![Image]() ![Image]() -##Build instruction -First of all we need to retrieve the dependencies. +##Build instructions + +##Dependencies +Make sure to install these first. + +--- + +**Ubuntu 14.04** -###Ubuntu 14.04 sudo apt-get install build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qtdeclarative5-controls-plugin qtdeclarative5-qtquick2-plugin libqt5qml-graphicaleffects qtdeclarative5-dialogs-plugin qtdeclarative5-localstorage-plugin qtdeclarative5-window-plugin -###Debian Jessie +--- + +**Debian Jessie** + sudo apt-get install build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtgraphicaleffects qml-module-qtquick-dialogs qml-module-qtquick-localstorage qml-module-qtquick-window2 -###Arch Linux +--- + +**Arch Linux** + sudo pacman -S qt5-base qt5-declarative qt5-quickcontrols qt5-graphicaleffects You can also install this [package](https://aur.archlinux.org/packages/cool-old-term-git/) directly via the [AUR](https://aur.archlinux.org): yaourt -S aur/cool-old-term-git -###Anyone else +--- + +**Anyone else** + Install Qt directly from here http://qt-project.org/downloads . Once done export them in you path (replace "_/opt/Qt5.3.1/5.3/gcc_64/bin_" with your correct folder): export PATH=/opt/Qt5.3.1/5.3/gcc_64/bin/:$PATH ###Compile -Once Qt are installed and in your path you need to compile and run the application: +Once you installed all dependencies (Qt is installed and in your path) you need to compile and run the application: - git clone https://github.com/Swordifish90/cool-old-term.git + git clone https://github.com/Swordifish90/cool-old-term.git cd cool-old-term cd konsole-qml-plugin qmake && make && make install cd .. - ./cool-old-term - + ./cool-old-term -- 2.47.2 From 807e63c5be37595629d82521f022f3842f0f3ede Mon Sep 17 00:00:00 2001 From: Alexandre Dantas Date: Thu, 31 Jul 2014 09:05:28 -0300 Subject: [PATCH 002/477] Small change on `README` Made sure to separate the different phases of the building process. Also, added bash syntax highlighting to the build block. --- README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cf4a8e5..8e12529 100644 --- a/README.md +++ b/README.md @@ -51,9 +51,16 @@ Install Qt directly from here http://qt-project.org/downloads . Once done export ###Compile Once you installed all dependencies (Qt is installed and in your path) you need to compile and run the application: - git clone https://github.com/Swordifish90/cool-old-term.git - cd cool-old-term - cd konsole-qml-plugin - qmake && make && make install - cd .. - ./cool-old-term +```bash +# Get it from GitHub +git clone https://github.com/Swordifish90/cool-old-term.git + +# Build it +cd cool-old-term +cd konsole-qml-plugin +qmake && make && make install +cd .. + +# Have fun! +./cool-old-term +``` -- 2.47.2 From c612a1d58623680929f4e7cecd57c40711db77a6 Mon Sep 17 00:00:00 2001 From: aacalfa Date: Thu, 31 Jul 2014 11:55:52 -0300 Subject: [PATCH 003/477] Workaround to work for MacOS X. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 4 + konsole-qml-plugin/src/kpty.cpp | 182 +++++++++++++++++++++ 2 files changed, 186 insertions(+) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 3c674b4..7470b78 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -675,6 +675,10 @@ static void drawLineChar(QPainter* paint, qreal x, qreal y, qreal w, qreal h, uc } +void KTerminalDisplay::banana(int x, int y, int z, int w) +{ +} + void KTerminalDisplay::setKeyboardCursorShape(KeyboardCursorShape shape) { _cursorShape = shape; diff --git a/konsole-qml-plugin/src/kpty.cpp b/konsole-qml-plugin/src/kpty.cpp index 4498a97..3b45be3 100644 --- a/konsole-qml-plugin/src/kpty.cpp +++ b/konsole-qml-plugin/src/kpty.cpp @@ -135,6 +135,188 @@ extern "C" { # endif #endif +// http://markmail.org/download.xqy?id=atu7scqmvlsku4n5&number=2 +typedef enum { F=0, T=1 } boolean; + +static int utmpfd = -1; +static char utmpath[PATH_MAX+1] = _PATH_UTMP; +static boolean readonly = F; +static struct utmp utmp; + + +struct utmp *getutent(); +struct utmp *getutid( struct utmp * ); +struct utmp *getutline( struct utmp * ); +void pututline( struct utmp * ); +void setutent(); +void endutent(); +void utmpname( char * ); + + + static + struct utmp * +_getutent( struct utmp *utmp ) +{ + if ( utmpfd == -1 ) + { + if ( (utmpfd = open(utmpath,O_RDWR)) == -1 ) + { + if ( (utmpfd = open(utmpath,O_RDONLY)) == -1 ) + return NULL; + else + readonly = T; + } + else + readonly = F; + } + + if ( read(utmpfd,utmp,sizeof(struct utmp)) == sizeof(struct utmp) ) + return utmp; + + return NULL; +} + + + struct utmp * +getutent() +{ + return _getutent( &utmp ); +} + + + struct utmp * +getutid( struct utmp *id ) +{ + struct utmp *up; + + if ( strncmp(id->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) + return &utmp; + + while( (up = getutent()) != NULL ) + { + if ( strncmp(id->ut_name,up->ut_name,UT_NAMESIZE) == 0 ) + return up; + } + + return NULL; +} + + + struct utmp * +getutline( struct utmp *line ) +{ + struct utmp *up; + + if ( strncmp(line->ut_line,utmp.ut_line,UT_LINESIZE) == 0 ) + return &utmp; + + while( (up = getutent()) != NULL ) + { + if ( strncmp(line->ut_line,up->ut_line,UT_LINESIZE) == 0 ) + return up; + } + + return NULL; +} + + + void +pututline( struct utmp *up ) +{ + struct utmp temp; + struct stat buf; + + /* Note that UP might be equal to &UTMP */ + + if ( strncmp(up->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) + /* File already at correct position */ + { + if ( ! readonly ) + { + lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); + write( utmpfd, up, sizeof(struct utmp) ); + } + + utmp = *up; + } + else + /* File is not at the correct postion; read forward, but do not destroy +UTMP */ + { + while( _getutent(&temp) != NULL ) + { + if ( strncmp(up->ut_name,temp.ut_name,UT_NAMESIZE) == 0 ) + /* File is now at the correct position */ + { + if ( ! readonly ) + { + lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); + write( utmpfd, up, sizeof(struct utmp) ); + } + + utmp = *up; + return; + } + } + + /* File is now at EOF */ + if ( ! readonly ) + { + if ( fstat(utmpfd,&buf) == 0 && lseek(utmpfd,0,SEEK_END) != -1 ) + { + if ( write(utmpfd,up,sizeof(struct utmp)) != sizeof(struct utmp) +) + ftruncate( utmpfd, buf.st_size ); + } + } + + utmp = *up; + } +} + + + void +setutent() +{ + if ( utmpfd != -1 ) + lseek( utmpfd, 0, SEEK_SET ); +} + + + void +endutent() +{ + if ( utmpfd != -1 ) + { + close( utmpfd ); + utmpfd = -1; + + memset( &utmp, 0, sizeof(struct utmp) ); + } +} + + + void +utmpname( char *file ) +{ + endutent(); + + strncpy( utmpath, file, PATH_MAX ); +} +// https://dev.mobileread.com/svn/iliados/upstream/tinylogin-1.4/libbb/libc5.c +void updwtmp(const char *wtmp_file, const struct utmp *lutmp) +{ + int fd; + + fd = open(wtmp_file, O_APPEND | O_WRONLY, 0); + if (fd >= 0) { + if (lockf(fd, F_LOCK, 0)==0) { + write(fd, (const char *) lutmp, sizeof(struct utmp)); + lockf(fd, F_ULOCK, 0); + close(fd); + } + } +} //#include //#include // findExe -- 2.47.2 From d063e888a3edf30e9ed074511f221b3786ddae11 Mon Sep 17 00:00:00 2001 From: aacalfa Date: Thu, 31 Jul 2014 12:16:43 -0300 Subject: [PATCH 004/477] Another workaround to solve blur problem. --- app/PreprocessedTerminal.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 773d00a..7e743e1 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -218,7 +218,7 @@ Item{ id: finalSource sourceItem: blurredterminal sourceRect: frame.sourceRect - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha hideSource: true } ShaderEffect { @@ -343,7 +343,7 @@ Item{ wrapMode: ShaderEffectSource.Repeat smooth: true hideSource: true - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha } // RASTERIZATION ////////////////////////////////////////////////////////// @@ -419,6 +419,6 @@ Item{ sourceItem: rasterizationContainer hideSource: true smooth: true - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha } } -- 2.47.2 From 61b733ba789a341fae8abdbf558fd2ea2027cdc5 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 31 Jul 2014 19:24:16 +0200 Subject: [PATCH 005/477] Fix #41: TERM env variable is now set by the plugin. --- konsole-qml-plugin/src/ksession.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/konsole-qml-plugin/src/ksession.cpp b/konsole-qml-plugin/src/ksession.cpp index 34e239a..a12e838 100644 --- a/konsole-qml-plugin/src/ksession.cpp +++ b/konsole-qml-plugin/src/ksession.cpp @@ -74,6 +74,8 @@ Session *KSession::createSession(QString name) QString shellProg = envshell != NULL ? envshell : "/bin/bash"; session->setProgram(shellProg); + setenv("TERM", "xterm", 1); + //session->setProgram(); QStringList args(""); -- 2.47.2 From 9d7efad7983d4acdb654c026a5614a75452bc356 Mon Sep 17 00:00:00 2001 From: aacalfa Date: Thu, 31 Jul 2014 14:25:23 -0300 Subject: [PATCH 006/477] Reverting PreprocessedTerminal.qml to be used in pull request. --- app/PreprocessedTerminal.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 7e743e1..773d00a 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -218,7 +218,7 @@ Item{ id: finalSource sourceItem: blurredterminal sourceRect: frame.sourceRect - //format: ShaderEffectSource.Alpha + format: ShaderEffectSource.Alpha hideSource: true } ShaderEffect { @@ -343,7 +343,7 @@ Item{ wrapMode: ShaderEffectSource.Repeat smooth: true hideSource: true - //format: ShaderEffectSource.Alpha + format: ShaderEffectSource.Alpha } // RASTERIZATION ////////////////////////////////////////////////////////// @@ -419,6 +419,6 @@ Item{ sourceItem: rasterizationContainer hideSource: true smooth: true - //format: ShaderEffectSource.Alpha + format: ShaderEffectSource.Alpha } } -- 2.47.2 From 52831fee6cad7680f9fef57c51b37b83fe1e7b1a Mon Sep 17 00:00:00 2001 From: kiwistrongis Date: Thu, 31 Jul 2014 14:40:06 -0400 Subject: [PATCH 007/477] added fedora dependencies and compile instructions to readme --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 8e12529..ca830a7 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,27 @@ Make sure to install these first. --- +**Fedora** +This command should install the known fedora dependencies: +``` +sudo yum -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols +``` +or: +``` +sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols +``` + +Compile using the following: +``` +git clone https://github.com/Swordifish90/cool-old-term.git +cd cool-old-term/konsole-qml-plugin +qmake-qt5 && make && make install +cd .. +./cool-old-term +``` + +--- + **Arch Linux** sudo pacman -S qt5-base qt5-declarative qt5-quickcontrols qt5-graphicaleffects -- 2.47.2 From 9fb7e72f81308febd9769d9bdd27ebf30d728e54 Mon Sep 17 00:00:00 2001 From: Andrey Yastrebov Date: Thu, 31 Jul 2014 23:46:40 +0400 Subject: [PATCH 008/477] - gitignore update --- .gitignore | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7e75990..365d6ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,36 @@ -*.pro.user* +# C++ objects and libs + +*.slo +*.lo +*.o +*.a +*.la +*.lai +*.so +*.dll +*.dylib + +# Qt-es + +/.qmake.cache +/.qmake.stash +*.pro.user +*.pro.user.* +*.moc +moc_*.cpp +qrc_*.cpp +ui_*.h +Makefile* +*-build-* + +# QtCreator + +*.autosave + +# QtCtreator Qml +*.qmlproject.user +*.qmlproject.user.* + +# Others + *.xcf -- 2.47.2 From 0f3c78a8c731f9153165542a9035f735fa7b0ef4 Mon Sep 17 00:00:00 2001 From: Firemark Date: Thu, 31 Jul 2014 22:21:14 +0200 Subject: [PATCH 009/477] modify shaders --- app/PreprocessedTerminal.qml | 5 +++-- app/ShaderTerminal.qml | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 773d00a..da24f08 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -218,7 +218,7 @@ Item{ id: finalSource sourceItem: blurredterminal sourceRect: frame.sourceRect - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha hideSource: true } ShaderEffect { @@ -261,7 +261,8 @@ Item{ : "") + - "gl_FragColor.a = floor(color) / 256.0;" + + "gl_FragColor = texture2D(source, coords);" + + "gl_FragColor.a = color / 256.0;" + "}" onStatusChanged: if (log) console.log(log) //Print warning messages diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index ad3b1d7..5fe5f15 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -183,8 +183,8 @@ ShaderEffect { (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + - - "vec3 finalColor = mix(background_color, font_color, color).rgb;" + + "vec4 new_font_color = mix(texture2D(source, txt_coords), font_color, 0.2);" + + "vec3 finalColor = mix(background_color, new_font_color, color).rgb;" + "finalColor *= texture2D(rasterizationSource, coords).a;" + (bloom !== 0 ? " @@ -194,6 +194,7 @@ ShaderEffect { finalColor *= brightness;" : "") + "gl_FragColor = vec4(finalColor *"+str(brightness)+", qt_Opacity); + //gl_FragColor = texture2D(source, txt_coords); }" onStatusChanged: if (log) console.log(log) //Print warning messages -- 2.47.2 From f167b4d4478b4ec6d6f81c937ac049cef51d992e Mon Sep 17 00:00:00 2001 From: Firemark Date: Thu, 31 Jul 2014 22:41:54 +0200 Subject: [PATCH 010/477] support many colors in terminal --- app/ShaderTerminal.qml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index 5fe5f15..26a9729 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -175,7 +175,7 @@ ShaderEffect { vec2 txt_coords = coords + offset * "+str(jitter)+";" : "vec2 txt_coords = coords;") + - "float color = texture2D(source, txt_coords).a;" + + "float color = 0.0;" + (noise_strength !== 0 ? " float noiseVal = texture2D(noiseSource, qt_TexCoord0 + vec2(fract(time / 51.0), fract(time / 237.0))).a; @@ -183,19 +183,22 @@ ShaderEffect { (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + - "vec4 new_font_color = mix(texture2D(source, txt_coords), font_color, 0.2);" + - "vec3 finalColor = mix(background_color, new_font_color, color).rgb;" + + + "vec4 realBackColor = texture2D(source, txt_coords);" + + "vec4 mixedColor = mix(realBackColor * font_color, font_color, 0.0);" + + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + + "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" + "finalColor *= texture2D(rasterizationSource, coords).a;" + (bloom !== 0 ? " - finalColor += font_color.rgb * texture2D(bloomSource, coords).r *" + str(bloom) + ";" : "") + + finalColor += font_color.rgb *" + + "dot(texture2D(bloomSource, coords).rgb, vec3(0.299, 0.587, 0.114)) *" + str(bloom) + ";" : "") + (brightness_flickering !== 0 ? " finalColor *= brightness;" : "") + - "gl_FragColor = vec4(finalColor *"+str(brightness)+", qt_Opacity); - //gl_FragColor = texture2D(source, txt_coords); - }" + "gl_FragColor = vec4(finalColor *"+str(brightness)+", qt_Opacity);" + + "}" onStatusChanged: if (log) console.log(log) //Print warning messages } -- 2.47.2 From e3d8992a35fbf852fc63369b3d71e899966a5697 Mon Sep 17 00:00:00 2001 From: Firemark Date: Fri, 1 Aug 2014 00:04:59 +0200 Subject: [PATCH 011/477] Add two settings to change colors. --- app/ApplicationSettings.qml | 9 +++++++- app/SettingsTerminalTab.qml | 42 ++++++++++++++++++++++++------------- app/ShaderTerminal.qml | 21 +++++++++++++++---- 3 files changed, 53 insertions(+), 19 deletions(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index 9daf9b2..d6e9a58 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -67,6 +67,9 @@ Item{ property real motion_blur: 0.40 property real bloom_strength: 0.65 + property real chroma_color: 0.0 + property real saturation_color: 0.0 + property real jitter: 0.18 property real horizontal_sincronization: 0.08 @@ -171,6 +174,8 @@ Item{ brightness_flickering: brightness_flickering, horizontal_sincronization: horizontal_sincronization, noise_strength: noise_strength, + chroma_color: chroma_color, + saturation_color: saturation_color, screen_distortion: screen_distortion, glowing_line_strength: glowing_line_strength, frames_index: frames_index, @@ -234,6 +239,8 @@ Item{ horizontal_sincronization = settings.horizontal_sincronization !== undefined ? settings.horizontal_sincronization : horizontal_sincronization brightness_flickering = settings.brightness_flickering !== undefined ? settings.brightness_flickering : brightness_flickering; noise_strength = settings.noise_strength !== undefined ? settings.noise_strength : noise_strength; + chroma_color = settings.chroma_color !== undefined ? settings.chroma_color : chroma_color; + saturation_color = settings.saturation_color !== undefined ? settings.saturation_color : saturation_color; screen_distortion = settings.screen_distortion !== undefined ? settings.screen_distortion : screen_distortion; glowing_line_strength = settings.glowing_line_strength !== undefined ? settings.glowing_line_strength : glowing_line_strength; @@ -333,7 +340,7 @@ Item{ } ListElement{ text: "IBM Dos" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1}' builtin: true } ListElement{ diff --git a/app/SettingsTerminalTab.qml b/app/SettingsTerminalTab.qml index 04e473f..07f5ba6 100644 --- a/app/SettingsTerminalTab.qml +++ b/app/SettingsTerminalTab.qml @@ -92,21 +92,35 @@ Tab{ GroupBox{ title: qsTr("Colors") Layout.fillWidth: true - RowLayout{ - anchors.fill: parent - ColorButton{ - name: qsTr("Font") - height: 50 - Layout.fillWidth: true - onColorSelected: shadersettings._font_color = color; - button_color: shadersettings._font_color + ColumnLayout{ + RowLayout{ + anchors.fill: parent + ColorButton{ + name: qsTr("Font") + height: 50 + Layout.fillWidth: true + onColorSelected: shadersettings._font_color = color; + button_color: shadersettings._font_color + } + ColorButton{ + name: qsTr("Background") + height: 50 + Layout.fillWidth: true + onColorSelected: shadersettings._background_color = color; + button_color: shadersettings._background_color + } } - ColorButton{ - name: qsTr("Background") - height: 50 - Layout.fillWidth: true - onColorSelected: shadersettings._background_color = color; - button_color: shadersettings._background_color + ColumnLayout{ + CheckableSlider{ + name: qsTr("Chroma Color") + onValueChanged: shadersettings.chroma_color = value + _value: shadersettings.chroma_color + } + CheckableSlider{ + name: qsTr("Saturation Color") + onValueChanged: shadersettings.saturation_color = value + _value: shadersettings.saturation_color + } } } } diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index 26a9729..9a411d5 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -39,6 +39,9 @@ ShaderEffect { property real screen_distorsion: shadersettings.screen_distortion property real glowing_line_strength: shadersettings.glowing_line_strength + property real chroma_color: shadersettings.chroma_color; + property real saturation_color: shadersettings.saturation_color; + property real brightness_flickering: shadersettings.brightness_flickering property real horizontal_sincronization: shadersettings.horizontal_sincronization @@ -184,10 +187,20 @@ ShaderEffect { (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + - "vec4 realBackColor = texture2D(source, txt_coords);" + - "vec4 mixedColor = mix(realBackColor * font_color, font_color, 0.0);" + - "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + - "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" + + (chroma_color !== 0 ? + "vec4 realBackColor = texture2D(source, txt_coords);" + + (saturation_color !== 0 ? + "vec4 satured_font_color = mix(font_color, vec4(1) , "+ str(saturation_color) + ");" + + "vec4 mixedColor = mix(font_color, realBackColor * satured_font_color, "+ str(chroma_color) +");": + "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" + ) + + + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + + "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" : + "color += texture2D(source, txt_coords).a;" + + "vec3 finalColor = mix(background_color, font_color, color).rgb;" + ) + + "finalColor *= texture2D(rasterizationSource, coords).a;" + (bloom !== 0 ? " -- 2.47.2 From 42d8bacc6d05ba01241ae59625f1506e545c800f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 1 Aug 2014 00:07:54 +0200 Subject: [PATCH 012/477] It is now possible to add the menubar. --- app/ApplicationSettings.qml | 4 ++++ app/PreprocessedTerminal.qml | 2 ++ app/main.qml | 16 ++++++++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index 9daf9b2..3ad1712 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -28,6 +28,7 @@ Item{ // GENERAL SETTINGS /////////////////////////////////////////////////// property bool fullscreen: false + property bool showMenubar: true property real windowOpacity: 1.0 property real ambient_light: 0.2 @@ -160,6 +161,7 @@ Item{ fontScalingIndexes: fontScalingIndexes, fontIndexes: fontIndexes, frameReflections: _frameReflections, + showMenubar: showMenubar } return JSON.stringify(settings); } @@ -223,6 +225,8 @@ Item{ fontScalingIndexes = settings.fontScalingIndexes !== undefined ? settings.fontScalingIndexes : fontScalingIndexes _frameReflections = settings.frameReflections !== undefined ? settings.frameReflections : _frameReflections; + + showMenubar = settings.showMenubar !== undefined ? settings.showMenubar : showMenubar; } function loadProfileString(profileString){ diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 773d00a..9f82954 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -122,10 +122,12 @@ Item{ } Menu{ id: contextmenu + MenuItem{action: copyAction} MenuItem{action: pasteAction} MenuSeparator{} MenuItem{action: fullscreenAction} + MenuItem{action: showMenubarAction} } MouseArea{ acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton diff --git a/app/main.qml b/app/main.qml index b808b53..3551d5c 100644 --- a/app/main.qml +++ b/app/main.qml @@ -40,6 +40,13 @@ ApplicationWindow{ color: "#00000000" title: qsTr("cool-old-term") + Action { + id: showMenubarAction + text: qsTr("Show Menubar") + checkable: true + checked: shadersettings.showMenubar + onTriggered: shadersettings.showMenubar = !shadersettings.showMenubar + } Action { id: fullscreenAction text: qsTr("&Fullscreen") @@ -102,12 +109,12 @@ ApplicationWindow{ id: menubar Menu { title: qsTr("File") - visible: shadersettings.fullscreen ? false : true + visible: shadersettings.showMenubar MenuItem {action: quitAction} } Menu { title: qsTr("Edit") - visible: shadersettings.fullscreen ? false : true + visible: shadersettings.showMenubar MenuItem {action: copyAction} MenuItem {action: pasteAction} MenuSeparator{} @@ -115,15 +122,16 @@ ApplicationWindow{ } Menu{ title: qsTr("View") - visible: shadersettings.fullscreen ? false : true + visible: shadersettings.showMenubar MenuItem {action: fullscreenAction} + MenuItem {action: showMenubarAction} MenuSeparator{} MenuItem {action: zoomIn} MenuItem {action: zoomOut} } Menu{ title: qsTr("Help") - visible: shadersettings.fullscreen ? false : true + visible: shadersettings.showMenubar MenuItem {action: showAboutAction} } } -- 2.47.2 From e1ac0a35b4defb3fea3f95ac2a92e5a1d59d205c Mon Sep 17 00:00:00 2001 From: Firemark Date: Fri, 1 Aug 2014 00:21:34 +0200 Subject: [PATCH 013/477] Change colors in color scheme --- app/ApplicationSettings.qml | 16 ++++++------ .../assets/color-schemes/cool-old-term.schema | 25 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index d6e9a58..35a12e8 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -310,42 +310,42 @@ Item{ id: profileslist ListElement{ text: "Default Amber" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "Default Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "Default Scanlines" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "Default Pixelated" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "Apple ][" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "Vintage" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' builtin: true } ListElement{ text: "IBM Dos" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1,"saturation_color":0}' builtin: true } ListElement{ text: "Transparent Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681,"chroma_color":0,"saturation_color":0}' builtin: true } } diff --git a/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema b/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema index 4df8184..6687f35 100644 --- a/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema +++ b/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema @@ -36,22 +36,23 @@ color 1 0 0 0 1 0 # regular background color (Black) color 2 0 0 0 0 0 # regular color 0 Black -color 3 59 59 59 0 0 # regular color 1 Red +color 3 255 43 43 0 0 # regular color 1 Red -color 4 137 137 137 0 0 # regular color 2 Green +color 4 0 28 172 120 0 0 # regular color 2 Green -color 5 116 116 116 0 0 # regular color 3 Yellow +color 5 248 213 104 0 0 # regular color 3 Yellow -color 6 39 39 39 0 0 # regular color 4 Blue +color 6 0 43 108 196 # regular color 4 Blue -color 7 70 70 70 0 0 # regular color 5 Magenta +color 7 255 29 206 0 0 # regular color 5 Magenta -color 8 148 148 148 0 0 # regular color 6 Cyan +color 8 24 167 181 0 0 # regular color 6 Cyan color 9 179 179 179 0 0 # regular color 7 White + # intensive colors @@ -68,17 +69,17 @@ color 11 0 0 0 1 0 # intensive background color color 12 106 106 106 0 0 # intensive color 0 -color 13 122 122 122 0 0 # intensive color 1 +color 13 253 94 83 0 0 # intensive color 1 -color 14 207 207 207 0 0 # intensive color 2 +color 14 168 228 160 0 0 # intensive color 2 -color 15 243 243 243 0 0 # intensive color 3 +color 15 254 254 34 0 0 # intensive color 3 -color 16 99 99 99 0 0 # intensive color 4 +color 16 154 206 235 0 0 # intensive color 4 -color 17 134 134 134 0 0 # intensive color 5 +color 17 252 116 253 0 0 # intensive color 5 -color 18 219 219 219 0 0 # intensive color 6 +color 18 236 234 190 0 0 # intensive color 6 color 19 255 255 255 0 0 # intensive color 7 -- 2.47.2 From 3d5ee0ec704416032f02f22f815162e2facc809c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 1 Aug 2014 00:36:19 +0200 Subject: [PATCH 014/477] Disabled mono channel textures which were unsupported on some systems. --- app/PreprocessedTerminal.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 9f82954..39a07cf 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -220,7 +220,7 @@ Item{ id: finalSource sourceItem: blurredterminal sourceRect: frame.sourceRect - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha hideSource: true } ShaderEffect { @@ -345,7 +345,7 @@ Item{ wrapMode: ShaderEffectSource.Repeat smooth: true hideSource: true - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha } // RASTERIZATION ////////////////////////////////////////////////////////// @@ -421,6 +421,6 @@ Item{ sourceItem: rasterizationContainer hideSource: true smooth: true - format: ShaderEffectSource.Alpha + //format: ShaderEffectSource.Alpha } } -- 2.47.2 From c9097795145df1fb05a28cb34e3f01f6193d769b Mon Sep 17 00:00:00 2001 From: Cornelius Schumacher Date: Fri, 1 Aug 2014 00:45:38 +0200 Subject: [PATCH 015/477] Add instructions for compiling on openSUSE --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index ca830a7..54b50f3 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,25 @@ You can also install this [package](https://aur.archlinux.org/packages/cool-old- --- +**openSUSE** + +Install dependencies: + + sudo zypper ar http://download.opensuse.org/repositories/KDE:/Qt5/openSUSE_13.1/ KDE:Qt5 + sudo zypper install libqt5-qtbase-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols libqt5-qtgraphicaleffects + +Compile: + +```bash +git clone https://github.com/Swordifish90/cool-old-term.git +cd cool-old-term/konsole-qml-plugin +qmake-qt5 && make && make install +cd .. +./cool-old-term +``` + +--- + **Anyone else** Install Qt directly from here http://qt-project.org/downloads . Once done export them in you path (replace "_/opt/Qt5.3.1/5.3/gcc_64/bin_" with your correct folder): -- 2.47.2 From 5978a0de709a45ac610c0bd081e3c3f2b6f57a20 Mon Sep 17 00:00:00 2001 From: aacalfa Date: Thu, 31 Jul 2014 22:28:12 -0300 Subject: [PATCH 016/477] Reorganizing last commit. Changes to kpty.cpp were moved to file utmpmac.cpp. Thus I modified .pro file to add this new file utmpmac to be compiled. I have put both .cpp and .h files inside a macro so that they are only considered when building from a mac. Same with include from kpty.cpp. --- konsole-qml-plugin/konsole-qml-plugin.pro | 3 +- konsole-qml-plugin/src/kpty.cpp | 184 +-------------------- konsole-qml-plugin/src/utmpmac.cpp | 186 ++++++++++++++++++++++ konsole-qml-plugin/src/utmpmac.h | 13 ++ 4 files changed, 204 insertions(+), 182 deletions(-) create mode 100644 konsole-qml-plugin/src/utmpmac.cpp create mode 100644 konsole-qml-plugin/src/utmpmac.h diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro index 3008d02..dfe71d7 100644 --- a/konsole-qml-plugin/konsole-qml-plugin.pro +++ b/konsole-qml-plugin/konsole-qml-plugin.pro @@ -43,7 +43,8 @@ SOURCES += \ $$PWD/src/Filter.cpp \ $$PWD/src/ColorScheme.cpp \ $$PWD/src/TerminalDisplay.cpp \ - $$PWD/src/ksession.cpp + $$PWD/src/ksession.cpp \ + src/utmpmac.cpp HEADERS += \ $$PWD/src/plugin.h \ diff --git a/konsole-qml-plugin/src/kpty.cpp b/konsole-qml-plugin/src/kpty.cpp index 3b45be3..02d9b29 100644 --- a/konsole-qml-plugin/src/kpty.cpp +++ b/konsole-qml-plugin/src/kpty.cpp @@ -135,188 +135,10 @@ extern "C" { # endif #endif -// http://markmail.org/download.xqy?id=atu7scqmvlsku4n5&number=2 -typedef enum { F=0, T=1 } boolean; +#if defined (__APPLE__) +#include "utmpmac.h" +#endif -static int utmpfd = -1; -static char utmpath[PATH_MAX+1] = _PATH_UTMP; -static boolean readonly = F; -static struct utmp utmp; - - -struct utmp *getutent(); -struct utmp *getutid( struct utmp * ); -struct utmp *getutline( struct utmp * ); -void pututline( struct utmp * ); -void setutent(); -void endutent(); -void utmpname( char * ); - - - static - struct utmp * -_getutent( struct utmp *utmp ) -{ - if ( utmpfd == -1 ) - { - if ( (utmpfd = open(utmpath,O_RDWR)) == -1 ) - { - if ( (utmpfd = open(utmpath,O_RDONLY)) == -1 ) - return NULL; - else - readonly = T; - } - else - readonly = F; - } - - if ( read(utmpfd,utmp,sizeof(struct utmp)) == sizeof(struct utmp) ) - return utmp; - - return NULL; -} - - - struct utmp * -getutent() -{ - return _getutent( &utmp ); -} - - - struct utmp * -getutid( struct utmp *id ) -{ - struct utmp *up; - - if ( strncmp(id->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) - return &utmp; - - while( (up = getutent()) != NULL ) - { - if ( strncmp(id->ut_name,up->ut_name,UT_NAMESIZE) == 0 ) - return up; - } - - return NULL; -} - - - struct utmp * -getutline( struct utmp *line ) -{ - struct utmp *up; - - if ( strncmp(line->ut_line,utmp.ut_line,UT_LINESIZE) == 0 ) - return &utmp; - - while( (up = getutent()) != NULL ) - { - if ( strncmp(line->ut_line,up->ut_line,UT_LINESIZE) == 0 ) - return up; - } - - return NULL; -} - - - void -pututline( struct utmp *up ) -{ - struct utmp temp; - struct stat buf; - - /* Note that UP might be equal to &UTMP */ - - if ( strncmp(up->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) - /* File already at correct position */ - { - if ( ! readonly ) - { - lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); - write( utmpfd, up, sizeof(struct utmp) ); - } - - utmp = *up; - } - else - /* File is not at the correct postion; read forward, but do not destroy -UTMP */ - { - while( _getutent(&temp) != NULL ) - { - if ( strncmp(up->ut_name,temp.ut_name,UT_NAMESIZE) == 0 ) - /* File is now at the correct position */ - { - if ( ! readonly ) - { - lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); - write( utmpfd, up, sizeof(struct utmp) ); - } - - utmp = *up; - return; - } - } - - /* File is now at EOF */ - if ( ! readonly ) - { - if ( fstat(utmpfd,&buf) == 0 && lseek(utmpfd,0,SEEK_END) != -1 ) - { - if ( write(utmpfd,up,sizeof(struct utmp)) != sizeof(struct utmp) -) - ftruncate( utmpfd, buf.st_size ); - } - } - - utmp = *up; - } -} - - - void -setutent() -{ - if ( utmpfd != -1 ) - lseek( utmpfd, 0, SEEK_SET ); -} - - - void -endutent() -{ - if ( utmpfd != -1 ) - { - close( utmpfd ); - utmpfd = -1; - - memset( &utmp, 0, sizeof(struct utmp) ); - } -} - - - void -utmpname( char *file ) -{ - endutent(); - - strncpy( utmpath, file, PATH_MAX ); -} -// https://dev.mobileread.com/svn/iliados/upstream/tinylogin-1.4/libbb/libc5.c -void updwtmp(const char *wtmp_file, const struct utmp *lutmp) -{ - int fd; - - fd = open(wtmp_file, O_APPEND | O_WRONLY, 0); - if (fd >= 0) { - if (lockf(fd, F_LOCK, 0)==0) { - write(fd, (const char *) lutmp, sizeof(struct utmp)); - lockf(fd, F_ULOCK, 0); - close(fd); - } - } -} //#include //#include // findExe diff --git a/konsole-qml-plugin/src/utmpmac.cpp b/konsole-qml-plugin/src/utmpmac.cpp new file mode 100644 index 0000000..3824bb3 --- /dev/null +++ b/konsole-qml-plugin/src/utmpmac.cpp @@ -0,0 +1,186 @@ +#if defined (__APPLE__) +#include "utmpmac.h" + +typedef enum { F=0, T=1 } boolean; + +static int utmpfd = -1; +static char utmpath[PATH_MAX+1] = _PATH_UTMP; +static boolean readonly = F; +static struct utmp utmp; + + +struct utmp *getutent(); +struct utmp *getutid( struct utmp * ); +struct utmp *getutline( struct utmp * ); +void pututline( struct utmp * ); +void setutent(); +void endutent(); +void utmpname( char * ); + + + static + struct utmp * +_getutent( struct utmp *utmp ) +{ + if ( utmpfd == -1 ) + { + if ( (utmpfd = open(utmpath,O_RDWR)) == -1 ) + { + if ( (utmpfd = open(utmpath,O_RDONLY)) == -1 ) + return NULL; + else + readonly = T; + } + else + readonly = F; + } + + if ( read(utmpfd,utmp,sizeof(struct utmp)) == sizeof(struct utmp) ) + return utmp; + + return NULL; +} + + + struct utmp * +getutent() +{ + return _getutent( &utmp ); +} + + + struct utmp * +getutid( struct utmp *id ) +{ + struct utmp *up; + + if ( strncmp(id->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) + return &utmp; + + while( (up = getutent()) != NULL ) + { + if ( strncmp(id->ut_name,up->ut_name,UT_NAMESIZE) == 0 ) + return up; + } + + return NULL; +} + + + struct utmp * +getutline( struct utmp *line ) +{ + struct utmp *up; + + if ( strncmp(line->ut_line,utmp.ut_line,UT_LINESIZE) == 0 ) + return &utmp; + + while( (up = getutent()) != NULL ) + { + if ( strncmp(line->ut_line,up->ut_line,UT_LINESIZE) == 0 ) + return up; + } + + return NULL; +} + + + void +pututline( struct utmp *up ) +{ + struct utmp temp; + struct stat buf; + + /* Note that UP might be equal to &UTMP */ + + if ( strncmp(up->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 ) + /* File already at correct position */ + { + if ( ! readonly ) + { + lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); + write( utmpfd, up, sizeof(struct utmp) ); + } + + utmp = *up; + } + else + /* File is not at the correct postion; read forward, but do not destroy +UTMP */ + { + while( _getutent(&temp) != NULL ) + { + if ( strncmp(up->ut_name,temp.ut_name,UT_NAMESIZE) == 0 ) + /* File is now at the correct position */ + { + if ( ! readonly ) + { + lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR ); + write( utmpfd, up, sizeof(struct utmp) ); + } + + utmp = *up; + return; + } + } + + /* File is now at EOF */ + if ( ! readonly ) + { + if ( fstat(utmpfd,&buf) == 0 && lseek(utmpfd,0,SEEK_END) != -1 ) + { + if ( write(utmpfd,up,sizeof(struct utmp)) != sizeof(struct utmp) +) + ftruncate( utmpfd, buf.st_size ); + } + } + + utmp = *up; + } +} + + + void +setutent() +{ + if ( utmpfd != -1 ) + lseek( utmpfd, 0, SEEK_SET ); +} + + + void +endutent() +{ + if ( utmpfd != -1 ) + { + close( utmpfd ); + utmpfd = -1; + + memset( &utmp, 0, sizeof(struct utmp) ); + } +} + + + void +utmpname( char *file ) +{ + endutent(); + + strncpy( utmpath, file, PATH_MAX ); +} +// https://dev.mobileread.com/svn/iliados/upstream/tinylogin-1.4/libbb/libc5.c +void updwtmp(const char *wtmp_file, const struct utmp *lutmp) +{ + int fd; + + fd = open(wtmp_file, O_APPEND | O_WRONLY, 0); + if (fd >= 0) { + if (lockf(fd, F_LOCK, 0)==0) { + write(fd, (const char *) lutmp, sizeof(struct utmp)); + lockf(fd, F_ULOCK, 0); + close(fd); + } + } +} + +#endif diff --git a/konsole-qml-plugin/src/utmpmac.h b/konsole-qml-plugin/src/utmpmac.h new file mode 100644 index 0000000..9052174 --- /dev/null +++ b/konsole-qml-plugin/src/utmpmac.h @@ -0,0 +1,13 @@ +#if defined (__APPLE__) +# include + +struct utmp *getutent(); +struct utmp *getutid( struct utmp * ); +struct utmp *getutline( struct utmp * ); +void pututline( struct utmp * ); +void setutent(); +void endutent(); +void utmpname( char * ); +void updwtmp(const char *wtmp_file, const struct utmp *lutmp); + +#endif -- 2.47.2 From 296c64eb73d2da5adcbfe6dd114c3835c22d66a4 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Fri, 1 Aug 2014 16:33:50 +0200 Subject: [PATCH 017/477] Create cool-old-term.spec Add a spec file to create RPM packages of cool-old-term. Verified to work with both Fedora 20 and openSUSE Factory. Support for other RPM-based distros (Mageia comes to mind) is as easy as adding additional (Build)Requires conditions. --- cool-old-term.spec | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 cool-old-term.spec diff --git a/cool-old-term.spec b/cool-old-term.spec new file mode 100644 index 0000000..869568d --- /dev/null +++ b/cool-old-term.spec @@ -0,0 +1,96 @@ +# +# spec file for package cool-old-term +# +# Copyright © 2014 Markus S. +# +# Contains snippets from https://aur.archlinux.org/packages/cool-old-term-git +# by Glen Oakley +# and Doug Newgard +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Name: cool-old-term +Summary: Cool Old Terminal +Version: 0.9 +Release: 0%{?dist} +Group: System/GUI/Other +License: GPLv3 +URL: http://swordfishslabs.wordpress.com/ + +# For this spec file to work, the ympd sources must be located in a directory +# named cool-old-term-0.9 (with "0.9" being the version number defined above). +# If the sources are compressed in another format than ZIP, change the +# file extension accordingly. +Source0: %{name}-%{version}.zip + +# Package names only verified with Fedora and openSUSE. +# Should the packages in your distro be named dirrerently, +# see http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto +%if 0%{?fedora} +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtdeclarative-devel +BuildRequires: unzip +Requires: qt5-qtbase +Requires: qt5-qtbase-gui +Requires: qt5-qtdeclarative +Requires: qt5-qtgraphicaleffects +Requires: qt5-qtquickcontrols +%endif + +%if 0%{?suse_version} +BuildRequires: libqt5-qtbase-devel +BuildRequires: libqt5-qtdeclarative-devel +BuildRequires: unzip +Requires: libqt5-qtquickcontrols +Requires: libqt5-qtbase +Requires: libQt5Gui5 +Requires: libqt5-qtdeclarative +Requires: libqt5-qtgraphicaleffects +%endif + +%description +cool-old-term is a terminal emulator which tries to mimic the look and feel +of the old cathode tube screens. It has been designed to be eye-candy, +customizable, and reasonably lightweight. + +%prep +%setup -q + +%build +pushd konsole-qml-plugin +qmake-qt5 -o Makefile konsole-qml-plugin.pro +make %{?_smp_mflags} +popd + +%install +pushd konsole-qml-plugin +%{make_install} +popd + +install -d "%{buildroot}/%{_datadir}/%{name}/" "%{buildroot}/%{_bindir}" +cp -a app imports "%{buildroot}/%{_datadir}/%{name}/" +echo -e '#!/bin/bash\nqmlscene -I /usr/share/cool-old-term/{imports,app/main.qml}' > "%{buildroot}/%{_bindir}/%{name}" +chmod 755 "%{buildroot}/%{_bindir}/%{name}" + +%files +%doc gpl-2.0.txt gpl-3.0.txt README.md +%{_bindir}/%{name} +%{_datadir}/%{name} +# FIXME: Icon and Desktop files +# %{_datadir}/applications/%{name}.desktop +# %{_datadir}/pixmaps/%{name}.png +# %{_datadir}/icons/hicolor/*/*/* + +%clean +rm -rf %{buildroot} -- 2.47.2 From 0de719b67f5e042cc3d81836e97054637fd33342 Mon Sep 17 00:00:00 2001 From: Cornelius Schumacher Date: Fri, 1 Aug 2014 16:38:29 +0200 Subject: [PATCH 018/477] Special Qt5 repo only needed for openSUSE 13.1 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 54b50f3..3004ae6 100644 --- a/README.md +++ b/README.md @@ -65,9 +65,12 @@ You can also install this [package](https://aur.archlinux.org/packages/cool-old- **openSUSE** -Install dependencies: +Add repository with latest Qt 5 (this is only needed on openSUSE 13.1, Factory already has it): sudo zypper ar http://download.opensuse.org/repositories/KDE:/Qt5/openSUSE_13.1/ KDE:Qt5 + +Install dependencies: + sudo zypper install libqt5-qtbase-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols libqt5-qtgraphicaleffects Compile: -- 2.47.2 From b81818f74d9cbf51046970073a85b70375a3b136 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Fri, 1 Aug 2014 16:43:41 +0200 Subject: [PATCH 019/477] Update cool-old-term.spec Name fix --- cool-old-term.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cool-old-term.spec b/cool-old-term.spec index 869568d..a07739b 100644 --- a/cool-old-term.spec +++ b/cool-old-term.spec @@ -28,7 +28,7 @@ Group: System/GUI/Other License: GPLv3 URL: http://swordfishslabs.wordpress.com/ -# For this spec file to work, the ympd sources must be located in a directory +# For this spec file to work, the cool-old-term sources must be located in a directory # named cool-old-term-0.9 (with "0.9" being the version number defined above). # If the sources are compressed in another format than ZIP, change the # file extension accordingly. -- 2.47.2 From 876e6079d469b2101a90fede89e2d8a29ac0a33f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 2 Aug 2014 20:03:16 +0200 Subject: [PATCH 020/477] Fix: color layout in settings window. --- app/SettingsTerminalTab.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/SettingsTerminalTab.qml b/app/SettingsTerminalTab.qml index 07f5ba6..f8116c8 100644 --- a/app/SettingsTerminalTab.qml +++ b/app/SettingsTerminalTab.qml @@ -93,8 +93,9 @@ Tab{ title: qsTr("Colors") Layout.fillWidth: true ColumnLayout{ + anchors.fill: parent RowLayout{ - anchors.fill: parent + Layout.fillWidth: true ColorButton{ name: qsTr("Font") height: 50 @@ -111,6 +112,7 @@ Tab{ } } ColumnLayout{ + Layout.fillWidth: true CheckableSlider{ name: qsTr("Chroma Color") onValueChanged: shadersettings.chroma_color = value -- 2.47.2 From 4b4fabaee34d3104bb3aae3e9880213d9079343a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 3 Aug 2014 10:36:07 +0200 Subject: [PATCH 021/477] Fix issues between colors and motion blur. --- app/PreprocessedTerminal.qml | 8 +++++--- app/ShaderTerminal.qml | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 223e2e5..b3b5553 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -255,16 +255,18 @@ Item{ : "") + "coords = coords + delta;" + "vec4 vcolor = texture2D(source, coords) * 256.0; - float color = vcolor.r * 0.21 + vcolor.g * 0.72 + vcolor.b + 0.04;" + + float color = vcolor.r * 0.21 + vcolor.g * 0.72 + vcolor.b * 0.04;" + (mBlur !== 0 ? + "vec4 blurredVcolor = texture2D(blurredSource, coords) * 256.0;" + "float blurredSourceColor = texture2D(blurredSource, coords).a * 256.0;" + "blurredSourceColor = blurredSourceColor - blurredSourceColor * " + (1.0 - motionBlurCoefficient) * fpsAttenuation+ ";" + + "vcolor = step(1.0, color) * vcolor + step(color, 1.0) * blurredVcolor;" + "color = step(1.0, color) * color + step(color, 1.0) * blurredSourceColor;" : "") + - "gl_FragColor = texture2D(source, coords);" + - "gl_FragColor.a = color / 256.0;" + + "gl_FragColor = floor(vcolor) / 256.0;" + + "gl_FragColor.a = floor(color) / 256.0;" + "}" onStatusChanged: if (log) console.log(log) //Print warning messages diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index 9a411d5..a2e1c0d 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -191,7 +191,8 @@ ShaderEffect { "vec4 realBackColor = texture2D(source, txt_coords);" + (saturation_color !== 0 ? "vec4 satured_font_color = mix(font_color, vec4(1) , "+ str(saturation_color) + ");" + - "vec4 mixedColor = mix(font_color, realBackColor * satured_font_color, "+ str(chroma_color) +");": + "vec4 mixedColor = mix(font_color, realBackColor * satured_font_color, "+ str(chroma_color) +");" + : "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" ) + -- 2.47.2 From a7210c69ed999e8f6d0a385ab7cb3f8b4bcfffe8 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 3 Aug 2014 10:44:25 +0200 Subject: [PATCH 022/477] Fix incorrect colors scheme. --- konsole-qml-plugin/assets/color-schemes/cool-old-term.schema | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema b/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema index 6687f35..b9340a7 100644 --- a/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema +++ b/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema @@ -38,11 +38,11 @@ color 2 0 0 0 0 0 # regular color 0 Black color 3 255 43 43 0 0 # regular color 1 Red -color 4 0 28 172 120 0 0 # regular color 2 Green +color 4 28 172 120 0 0 # regular color 2 Green color 5 248 213 104 0 0 # regular color 3 Yellow -color 6 0 43 108 196 # regular color 4 Blue +color 6 43 108 196 0 0 # regular color 4 Blue color 7 255 29 206 0 0 # regular color 5 Magenta -- 2.47.2 From 1902e34d04cc8092f2ab1c422df730e8bca79560 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 3 Aug 2014 14:43:36 +0200 Subject: [PATCH 023/477] Fix issues between colors and bloom. --- app/PreprocessedTerminal.qml | 6 +++++- app/ShaderTerminal.qml | 23 ++++++++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index b3b5553..11f6cc5 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -246,6 +246,10 @@ Item{ "uniform lowp sampler2D blurredSource;" : "") + + "float rgb2grey(vec3 v){ + return dot(v, vec3(0.21, 0.72, 0.04)); + }" + + "void main() {" + "vec2 coords = qt_TexCoord0;" + (mScanlines != shadersettings.no_rasterization ? " @@ -255,7 +259,7 @@ Item{ : "") + "coords = coords + delta;" + "vec4 vcolor = texture2D(source, coords) * 256.0; - float color = vcolor.r * 0.21 + vcolor.g * 0.72 + vcolor.b * 0.04;" + + float color = rgb2grey(vcolor);" + (mBlur !== 0 ? "vec4 blurredVcolor = texture2D(blurredSource, coords) * 256.0;" + "float blurredSourceColor = texture2D(blurredSource, coords).a * 256.0;" + diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index a2e1c0d..f53d077 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -146,6 +146,9 @@ ShaderEffect { return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0001))) * glowing_line_strength; }" : "") + + "float rgb2grey(vec3 v){ + return dot(v, vec3(0.21, 0.72, 0.04)); + }" + "void main() {" + "vec2 cc = vec2(0.5) - qt_TexCoord0;" + @@ -187,26 +190,32 @@ ShaderEffect { (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + - (chroma_color !== 0 ? + (chroma_color !== 0 ? "vec4 realBackColor = texture2D(source, txt_coords);" + (saturation_color !== 0 ? "vec4 satured_font_color = mix(font_color, vec4(1) , "+ str(saturation_color) + ");" + "vec4 mixedColor = mix(font_color, realBackColor * satured_font_color, "+ str(chroma_color) +");" : "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" - ) + - + ) + + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + - "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" : + "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" + : "color += texture2D(source, txt_coords).a;" + "vec3 finalColor = mix(background_color, font_color, color).rgb;" ) + "finalColor *= texture2D(rasterizationSource, coords).a;" + - (bloom !== 0 ? " - finalColor += font_color.rgb *" + - "dot(texture2D(bloomSource, coords).rgb, vec3(0.299, 0.587, 0.114)) *" + str(bloom) + ";" : "") + + (bloom !== 0 ? + "vec3 bloomColor = texture2D(bloomSource, coords).rgb;" + + (chroma_color !== 0 ? + "bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, "+str(chroma_color)+");" + : + "bloomColor = font_color.rgb * rgb2grey(bloomColor);") + + "finalColor += bloomColor * "+str(bloom)+";" + : "") + (brightness_flickering !== 0 ? " finalColor *= brightness;" : "") + -- 2.47.2 From f4771d4f37408275ac4f06ec9ef8849827db3239 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 3 Aug 2014 16:39:28 +0200 Subject: [PATCH 024/477] Rewrite motion blur with colors. It now simpler. --- app/PreprocessedTerminal.qml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 11f6cc5..7720f49 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -220,7 +220,6 @@ Item{ id: finalSource sourceItem: blurredterminal sourceRect: frame.sourceRect - //format: ShaderEffectSource.Alpha hideSource: true } ShaderEffect { @@ -258,19 +257,18 @@ Item{ coords.x = floor(virtual_resolution.x * coords.x) / virtual_resolution.x;" : "") : "") + "coords = coords + delta;" + - "vec4 vcolor = texture2D(source, coords) * 256.0; - float color = rgb2grey(vcolor);" + + + "vec4 color = texture2D(source, coords) * 256.0; + color.a = rgb2grey(color.rgb);" + + (mBlur !== 0 ? - "vec4 blurredVcolor = texture2D(blurredSource, coords) * 256.0;" + - "float blurredSourceColor = texture2D(blurredSource, coords).a * 256.0;" + - "blurredSourceColor = blurredSourceColor - blurredSourceColor * " + (1.0 - motionBlurCoefficient) * fpsAttenuation+ ";" + - "vcolor = step(1.0, color) * vcolor + step(color, 1.0) * blurredVcolor;" + - "color = step(1.0, color) * color + step(color, 1.0) * blurredSourceColor;" + "vec4 blur_color = texture2D(blurredSource, coords) * 256.0;" + + "blur_color.a = blur_color.a - blur_color.a * " + (1.0 - motionBlurCoefficient) * fpsAttenuation+ ";" + + "color = step(1.0, color.a) * color + step(color.a, 1.0) * blur_color;" : "") + - "gl_FragColor = floor(vcolor) / 256.0;" + - "gl_FragColor.a = floor(color) / 256.0;" + + "gl_FragColor = floor(color) / 256.0;" + "}" onStatusChanged: if (log) console.log(log) //Print warning messages -- 2.47.2 From 17f605275e7755114a2ab702967780884d93ef74 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Mon, 4 Aug 2014 01:34:44 +0200 Subject: [PATCH 025/477] Update and rename cool-old-term.spec to rpm/cool-old-term.spec Put specfile in a subdirectory and add a line that was missing before --- cool-old-term.spec => rpm/cool-old-term.spec | 1 + 1 file changed, 1 insertion(+) rename cool-old-term.spec => rpm/cool-old-term.spec (99%) diff --git a/cool-old-term.spec b/rpm/cool-old-term.spec similarity index 99% rename from cool-old-term.spec rename to rpm/cool-old-term.spec index a07739b..1f6f8b7 100644 --- a/cool-old-term.spec +++ b/rpm/cool-old-term.spec @@ -84,6 +84,7 @@ echo -e '#!/bin/bash\nqmlscene -I /usr/share/cool-old-term/{imports,app/main.qml chmod 755 "%{buildroot}/%{_bindir}/%{name}" %files +%defattr(-,root,root,-) %doc gpl-2.0.txt gpl-3.0.txt README.md %{_bindir}/%{name} %{_datadir}/%{name} -- 2.47.2 From eab0eec74697e430c5b7b0ad53d641146bd1e922 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Mon, 4 Aug 2014 01:35:46 +0200 Subject: [PATCH 026/477] Rename rpm/cool-old-term.spec to packaging/rpm/cool-old-term.spec --- {rpm => packaging/rpm}/cool-old-term.spec | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {rpm => packaging/rpm}/cool-old-term.spec (100%) diff --git a/rpm/cool-old-term.spec b/packaging/rpm/cool-old-term.spec similarity index 100% rename from rpm/cool-old-term.spec rename to packaging/rpm/cool-old-term.spec -- 2.47.2 From 1cd41ce0b964aadf4b2701533375b0ae20375fd1 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 4 Aug 2014 01:46:07 +0200 Subject: [PATCH 027/477] Fix 27 : profile name is now validated. --- app/InsertNameDialog.qml | 46 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/app/InsertNameDialog.qml b/app/InsertNameDialog.qml index 3e16d81..85e86c1 100644 --- a/app/InsertNameDialog.qml +++ b/app/InsertNameDialog.qml @@ -22,16 +22,41 @@ import QtQuick 2.2 import QtQuick.Window 2.0 import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.1 Window{ id: insertnamedialog width: 400 height: 100 modality: Qt.ApplicationModal - title: qsTr("Save current profile") + title: qsTr("Save new profile") signal nameSelected(string name) + MessageDialog { + id: errorDialog + title: qsTr("Error") + visible: false + + function showError(message){ + text = message; + open(); + } + } + + function validateName(name){ + var profile_list = shadersettings.profiles_list; + if (name === "") + return 1; + + for (var i = 0; i < profile_list.count; i++){ + if(profile_list.get(i).text === name) + return 2; + } + + return 0; + } + ColumnLayout{ anchors.margins: 10 anchors.fill: parent @@ -41,16 +66,29 @@ Window{ id: namefield Layout.fillWidth: true Component.onCompleted: forceActiveFocus() + onAccepted: okbutton.clickAction() } } RowLayout{ anchors.right: parent.right anchors.bottom: parent.bottom Button{ + id: okbutton text: qsTr("OK") - onClicked: { - nameSelected(namefield.text); - close(); + onClicked: clickAction() + function clickAction(){ + var name = namefield.text; + switch(validateName(name)){ + case 1: + errorDialog.showError(qsTr("The name you inserted is empty. Please choose a different one.")); + break; + case 2: + errorDialog.showError(qsTr("The name you inserted already exists. Please choose a different one.")); + break; + default: + nameSelected(name); + close(); + } } } Button{ -- 2.47.2 From 3d705f71785995f8af6550eba4a2c7c07f6cd13d Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 4 Aug 2014 01:49:48 +0200 Subject: [PATCH 028/477] Fix 28 : Save New Profile is clearer. --- app/SettingsGeneralTab.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/SettingsGeneralTab.qml b/app/SettingsGeneralTab.qml index 12ab3cf..b560b5d 100644 --- a/app/SettingsGeneralTab.qml +++ b/app/SettingsGeneralTab.qml @@ -49,7 +49,7 @@ Tab{ } Button{ Layout.fillWidth: true - text: qsTr("Store current") + text: qsTr("Save New Profile") onClicked: insertname.show() } Button{ -- 2.47.2 From 7f5a47f8a42edef1e1fb9f689b1463747ef5774d Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 6 Aug 2014 19:07:30 +0200 Subject: [PATCH 029/477] Use offline saturation color. Better and a little bit faster. --- app/ApplicationSettings.qml | 5 +++-- app/ShaderTerminal.qml | 7 +------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index 386e110..5d38948 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -59,8 +59,9 @@ Item{ property string _background_color: "#000000" property string _font_color: "#ff8100" - property color font_color: mix(strToColor(_font_color), strToColor(_background_color), 0.7 + (contrast * 0.3)) - property color background_color: mix(strToColor(_background_color), strToColor(_font_color), 0.7 + (contrast * 0.3)) + property string saturated_color: mix(strToColor("#FFFFFF"), strToColor(_font_color), saturation_color) + property color font_color: mix(strToColor(saturated_color), strToColor(_background_color), 0.7 + (contrast * 0.3)) + property color background_color: mix(strToColor(_background_color), strToColor(saturated_color), 0.7 + (contrast * 0.3)) property real noise_strength: 0.1 property real screen_distortion: 0.1 diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index f53d077..b4b12e1 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -192,12 +192,7 @@ ShaderEffect { (chroma_color !== 0 ? "vec4 realBackColor = texture2D(source, txt_coords);" + - (saturation_color !== 0 ? - "vec4 satured_font_color = mix(font_color, vec4(1) , "+ str(saturation_color) + ");" + - "vec4 mixedColor = mix(font_color, realBackColor * satured_font_color, "+ str(chroma_color) +");" - : - "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" - ) + + "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" -- 2.47.2 From 40d34c2cca6ca05a72775499c161db3e58c97c2a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 7 Aug 2014 00:18:44 +0200 Subject: [PATCH 030/477] Fix: colors play nicely with frames reflections now. --- app/frames/utils/FrameShader.qml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/frames/utils/FrameShader.qml b/app/frames/utils/FrameShader.qml index fee9045..78a1142 100644 --- a/app/frames/utils/FrameShader.qml +++ b/app/frames/utils/FrameShader.qml @@ -13,6 +13,8 @@ ShaderEffect{ property bool frameReflections: shadersettings.frameReflections property variant lightSource: reflectionEffectSourceLoader.item + property real chroma_color: shadersettings.chroma_color + Loader{ id: reflectionEffectLoader width: parent.width * 0.33 @@ -62,6 +64,10 @@ ShaderEffect{ return (coords + cc * (1.0 + dist) * dist); } + float rgb2grey(vec3 v){ + return dot(v, vec3(0.21, 0.72, 0.04)); + } + void main(){ vec2 coords = distortCoordinates(qt_TexCoord0); vec4 txt_color = texture2D(source, coords); @@ -72,16 +78,20 @@ ShaderEffect{ float dotProd = dot(normal, light_direction);" + (frameReflections ? " - float screenLight = texture2D(lightSource, coords).r; + vec3 realLightColor = texture2D(lightSource, coords).rgb; + float screenLight = rgb2grey(realLightColor); float clampedDotProd = clamp(dotProd, 0.05, 1.0); float diffuseReflection = clamp(screenLight * 1.5 * clampedDotProd, 0.0, 0.35); - float reflectionAlpha = mix(1.0, 0.90, dotProd);" + float reflectionAlpha = mix(1.0, 0.90, dotProd); + vec3 lightColor = mix(font_color.rgb * screenLight, font_color.rgb * realLightColor, "+chroma_color.toFixed(2)+");" : " float diffuseReflection = 0.0; - float reflectionAlpha = 1.0;") + " + float reflectionAlpha = 1.0; + vec3 lightColor = font_color.rgb;") + " + vec3 back_color = background_color.rgb * (0.2 + 0.5 * dotProd); - vec3 front_color = font_color.rgb * (0.05 + diffuseReflection); + vec3 front_color = lightColor * (0.05 + diffuseReflection); vec4 dark_color = vec4((back_color + front_color) * txt_normal.a, txt_normal.a * reflectionAlpha); gl_FragColor = mix(dark_color, txt_color, ambient_light); -- 2.47.2 From 307f6403273b8c2e9cf5d14eb32ffb43063e9b27 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 7 Aug 2014 00:21:40 +0200 Subject: [PATCH 031/477] Capping saturation to 50% --- app/ApplicationSettings.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index 5d38948..242f681 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -59,7 +59,7 @@ Item{ property string _background_color: "#000000" property string _font_color: "#ff8100" - property string saturated_color: mix(strToColor("#FFFFFF"), strToColor(_font_color), saturation_color) + property string saturated_color: mix(strToColor("#FFFFFF"), strToColor(_font_color), saturation_color * 0.5) property color font_color: mix(strToColor(saturated_color), strToColor(_background_color), 0.7 + (contrast * 0.3)) property color background_color: mix(strToColor(_background_color), strToColor(saturated_color), 0.7 + (contrast * 0.3)) -- 2.47.2 From be0ccfa1ba821e0dbc53001c235772fd81e61e38 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 7 Aug 2014 00:30:08 +0200 Subject: [PATCH 032/477] Changing close shortcut. --- app/main.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/main.qml b/app/main.qml index 3551d5c..0f81755 100644 --- a/app/main.qml +++ b/app/main.qml @@ -58,7 +58,7 @@ ApplicationWindow{ Action { id: quitAction text: qsTr("&Quit") - shortcut: "Ctrl+Q" + shortcut: "Ctrl+Shift+Q" onTriggered: terminalWindow.close(); } Action{ -- 2.47.2 From 064e967810fc51b903fa13748fc8de0cc33dcb44 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 7 Aug 2014 00:33:40 +0200 Subject: [PATCH 033/477] Fix 61 . Removed Alt based combinations. --- app/main.qml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/main.qml b/app/main.qml index 0f81755..7b02258 100644 --- a/app/main.qml +++ b/app/main.qml @@ -49,7 +49,7 @@ ApplicationWindow{ } Action { id: fullscreenAction - text: qsTr("&Fullscreen") + text: qsTr("Fullscreen") shortcut: "Alt+F11" onTriggered: shadersettings.fullscreen = !shadersettings.fullscreen; checkable: true @@ -57,30 +57,30 @@ ApplicationWindow{ } Action { id: quitAction - text: qsTr("&Quit") + text: qsTr("Quit") shortcut: "Ctrl+Shift+Q" onTriggered: terminalWindow.close(); } Action{ id: showsettingsAction - text: qsTr("&Settings") + text: qsTr("Settings") onTriggered: settingswindow.show(); } Action{ id: copyAction - text: qsTr("&Copy") + text: qsTr("Copy") shortcut: "Ctrl+Shift+C" onTriggered: terminal.copyClipboard() } Action{ id: pasteAction - text: qsTr("&Paste") + text: qsTr("Paste") shortcut: "Ctrl+Shift+V" onTriggered: terminal.pasteClipboard() } Action{ id: zoomIn - text: qsTr("&Zoom In") + text: qsTr("Zoom In") shortcut: "Ctrl++" onTriggered: { var oldScaling = shadersettings.fontScalingIndexes[shadersettings.rasterization]; @@ -90,7 +90,7 @@ ApplicationWindow{ } Action{ id: zoomOut - text: qsTr("&Zoom Out") + text: qsTr("Zoom Out") shortcut: "Ctrl+-" onTriggered: { var oldScaling = shadersettings.fontScalingIndexes[shadersettings.rasterization]; -- 2.47.2 From 428887cb8abf6c69666ca7e90b20c20c84f1a9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20B=C3=A1nffy?= Date: Thu, 7 Aug 2014 00:13:59 -0300 Subject: [PATCH 034/477] Added IBM 3278-like terminal font (from https://github.com/rbanffy/3270font) --- app/ApplicationSettings.qml | 5 +++++ app/Fonts.qml | 6 ++++++ app/fonts/1971-ibm-3278/3270Medium.ttf | Bin 0 -> 43748 bytes app/fonts/1971-ibm-3278/LICENSE.txt | 13 +++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 app/fonts/1971-ibm-3278/3270Medium.ttf create mode 100644 app/fonts/1971-ibm-3278/LICENSE.txt diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index 3ad1712..84da336 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -340,6 +340,11 @@ Item{ obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' builtin: true } + ListElement{ + text: "IBM 3278" + obj_string: '{"ambient_light":0.1,"background_color":"#000000","bloom_strength":0.15,"brightness":0.5,"brightness_flickering":0,"contrast":0.95,"fontIndex":8,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0,"horizontal_sincronization":0,"jitter":0,"motion_blur":0.6,"noise_strength":0,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' + builtin: true + } ListElement{ text: "Transparent Green" obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681}' diff --git a/app/Fonts.qml b/app/Fonts.qml index e851b6f..dc2a03b 100644 --- a/app/Fonts.qml +++ b/app/Fonts.qml @@ -83,5 +83,11 @@ Item{ lineSpacing: 0.2 pixelSize: 32 } + ListElement{ + text: "IBM 3278 (1971)" + source: "fonts/1971-ibm-3278/3270Medium.ttf" + lineSpacing: 0.2 + pixelSize: 32 + } } } diff --git a/app/fonts/1971-ibm-3278/3270Medium.ttf b/app/fonts/1971-ibm-3278/3270Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cb440692d4a8038b060636e30636ca049d78a9f8 GIT binary patch literal 43748 zcmeFa3w)H-wKu%i^UUp;%uFsblLQFKBq5n(Cih7)B$)|>5CnvPA)s7DLM{Y^1d|{T zkfLpE4+<(+1-w+j+8%EOiv+EDditKW+FJGWV!a?$>!+SpJw1xoS0?X&?dO?X5b8PS zci!(i@9%pvnVDzb*Is+Awbx#I?LC5o5H7J(sAAQuS*`QCv~PQbxbG>%W?V3{X_iP7 znF#*?;mie#N-OqG*jFY5btAm0eM8&EH(pmugs|=u!ra<^<$zCQD_ezd{0`}+HEsPH zhlf$KxbH56ZEMzV?Rxpm^;3mNLHTuCx;xuC=)!@oA?;nftGf|lepE1A~ zrLAqoVT1vX`S|+Y_O?kc#$G`EFCx5WL)(^(YAUrLeKzv@dfGO0Hnav02(kS&AyQx4 z*xNsF)9ZI839;`d2%i$%SGN`mPP|1@u>1q0>mt&NliyKkuMq!dAN#>d^N)RGpQqt+PFeBG4<#80c zUjL@oL^+`yMOc6*{__d({Uk9p2amwC5DUASI>b+e7#>!A!&3pnMdB}rCNUi!CzU05 z_6ef(zcwHQqxU7Mo;RDJ)xDhi^S}huDi3w>n8gB&-b4^)j8G`bM6P$R}6Qpft4fUQcj2y;Rh}szRZ7yp2pVj zpP}bA(EH}GmHgl55e$@zrQ$ny9}-uL#GU`4543(KUOR_BMy6&l7qrU!v0T!>n~O(KPIX{PeH`grEWz6Y}Zlqd3( zJV#zqo+mFoFC%YCUL^0^dB^ge40Z&+{@S6}jt=9GYokV4rWIvgJ8zj)!JV(&_1ckP z%rRW#%*9{q7vhhXy!QO7L$4lt_4unldiBVw559WOt9QJ*{nhGM#mP_paKRsngvim9 z?*q~bZU-|)pZ^{!#T1bz@`WF= zrBDPQi=PyB$Wcv900-YC?#B2Y7WatniF?KO#Sg^ai~Gd=;sNoXcu4#Z67#5d7_-$e z@rXDsh9Jit6$v6$I56v#LALD_SBq=J*Tpx)H^sH$TjJZ|@5C-~9p;_gVvo21a{eaF zO8dmkprl*Gt&pMzM3P8@HdRN1w2ijYRkVY?Mmy?hEp#jGrvr45Zo~YWAtr+^GDW&50!=+H)`|6^nx=|>hNPS- zUJ%`4t*ECOkp)RRO{}45VuQF)%oFoPuUI7pF#~ssjpA|fn0P|8iEZLaQ2T1kgquO9 ze-K|2?cyr2MRZ|iTrPerI>ZjK6?6A&@sbE)E?*`Vizcy9+%67^1)>2|zeHRlW`M#k z7A@jq%+`(KQgMlxB^FVwxJ}FyE5T9CVvhKf>S#JO&WggbLm2wNAszf7SKYvh+1e7Ev8mlLKo8|w3L?7a*9xt?xlL=apei+$HJo6 znZCd}|39ZMIj&D&OuvTF8^Bmi$7n6Yc-@Y%nv2omv08!A;<366G$ud~w}HZXFqg;w)`Ri{Xm%AS zt}7lH{|0pks*@p8JPzOSdN+YC2SJ%_24$|6R4G86OphH#iMVdS?em{pgMjDtR}Y}+ z0mtqEH@^%`HU=8nNgpUv@S2L(T;&?&ka9%%shX-5s6S9YHeG9az%0yD&2N}Lx7=gR zv2L_JZY#1avwfg#w|nf@+D|0(I5Hdo$4SRKPQ~eQ7C5ImXE{5Z8=W^gpLf3D%5Y6} zt#Yk*ZE>A&{gdl?*Gbnqi7APhiGjrG#A_2@Oq!L{lC&~uUDB0Fdy)<&{XFS6NvD!c z$w|o>$py(XlDm@ol6NHUO1>reQ1U~`k0t*+`8Ua@l0Qu;Na;?wC*?J_#T{@*+&8*! zcmKeB%>5JhGwv7NZ@T~L{=#GPcsxE&k!PxBre~q&8qd9+r#$a_ecl<~>%B+3KlQ$q zDpJ!^=cNv&K9u^q)GyKkY29hxPCK6VLb@rvBz<1`>hy=x-%tO1Ldt}q371URG2!6} zZ%njL^i8as*fnwc#Jv+wOniCbpC_eE3QSrx>Do#EH0k4vsTp%K)@NLw@mR*2la
  • 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 literal 0 HcmV?d00001 diff --git a/app/fonts/1971-ibm-3278/LICENSE.txt b/app/fonts/1971-ibm-3278/LICENSE.txt new file mode 100644 index 0000000..e34e816 --- /dev/null +++ b/app/fonts/1971-ibm-3278/LICENSE.txt @@ -0,0 +1,13 @@ +Copyright (c) 2011-2012, Ricardo Banffy. +Copyright (c) 1993-2011, Paul Mattes. +Copyright (c) 2004-2005, Don Russell. +Copyright (c) 2004, Dick Altenbern. +Copyright (c) 1990, Jeff Sparkes. +Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA 30332. +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the names of Ricardo Banffy, Paul Mattes, Don Russell, Dick Altenbern, Jeff Sparkes, GTRC nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES AND GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- 2.47.2 From 5a7e66081276052dc56cc91fad4d73eeca9191ff Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Thu, 7 Aug 2014 07:15:24 +0200 Subject: [PATCH 035/477] Create cool-old-term.desktop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Create cool-old-term.desktop – so far only with a placeholder icon ("utilities-terminal") that should be available on any modern graphical Linux installation. --- cool-old-term.desktop | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 cool-old-term.desktop diff --git a/cool-old-term.desktop b/cool-old-term.desktop new file mode 100644 index 0000000..df48bf2 --- /dev/null +++ b/cool-old-term.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Comment= +Exec=qmlscene -I /usr/share/cool-old-term/{imports,app/main.qml} +GenericName=Terminal emulator +Icon=utilities-terminal +MimeType= +Name=Cool Old Terminal +Path= +Categories=Qt;System;TerminalEmulator; +StartupNotify=true +Terminal=false +TerminalOptions= +Type=Application -- 2.47.2 From 3f672e6ef3073f7d7ba80f1d1436b7e12d45ce9e Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Thu, 7 Aug 2014 17:58:11 +0200 Subject: [PATCH 036/477] Create README.md Add https://raw.githubusercontent.com/rbanffy/3270font/master/README.md --- app/fonts/1971-ibm-3278/README.md | 73 +++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 app/fonts/1971-ibm-3278/README.md diff --git a/app/fonts/1971-ibm-3278/README.md b/app/fonts/1971-ibm-3278/README.md new file mode 100644 index 0000000..6f657b5 --- /dev/null +++ b/app/fonts/1971-ibm-3278/README.md @@ -0,0 +1,73 @@ +3270font: A font for the nostalgic +================================== +https://github.com/rbanffy/3270font + +![Screenshot](https://raw.github.com/wiki/rbanffy/3270font/emacs.png) + +A little bit of history +----------------------- + +This font is derived from the x3270 font, which, in turn, was translated +from the one in Georgia Tech's 3270tool, which was itself hand-copied +from a 3270 terminal. I built it because I felt terminals deserve to be +pretty. The .sfd font file contains a x3270 bitmap font that was used +for guidance. + +![Using with the Cathode terminal program] +(https://raw.github.com/wiki/rbanffy/3270font/cathode.png) + +The format +---------- + +This font was built with FontForge. You'll need it if you want to +generate fonts for your platform. On most civilized operating systems, +you can simply `apt-get install fontforge`, `yum install fontforge` or +even `port install fontforge`. On others, you may need to grab your copy +from http://fontforge.org/. I encourage you to drop by and read the +tutorials. + +![Powerline-shell compatible!] +(https://raw.github.com/wiki/rbanffy/3270font/powerline.png) + +Adobe Type 1, TTF, OTF and WOFF versions are available for download on +http://s3.amazonaws.com/rbanffy/3270_fonts.zip for those who would just +like to use them. + +![Using it on OSX] +(https://raw.github.com/wiki/rbanffy/3270font/osx_terminal.png) + +Generating derived files +------------------------ + +The script `generate_derived.pe` calls FontForge and generates +PostScript, OTF, TTF and WOFF versions of the base font, as well as a +slightly more condensed .sfd file with the base font narrowed to 488 +units, with no glyph rescaling and its corresponding PostScript, TTF, +OTF and WOFF versions. + +Contributing +------------ + +I don't think GitHub's pull-request mechanism is FontForge-friendly. If +you want to contribute (there are a lot of missing glyphs, such as the +APL set and most non-latin alphabets which most likely were never built +into 3270 terminals), get in touch and we will figure out how to do it +right. + +Preserving history +------------------ + +I regard the history of electronic computing a very important part of +our civilization's history. Consider donating to entities that help +preserve it, such as the Computer History Museum +(http://www.computerhistory.org/), the IT History Society +(http://ithistory.org/) and many others around the world. If you have a +historically significant piece of technology in your closet or garage, +consider contacting a local technology or industrial-design-oriented +museum for advice. + +Known problems +-------------- + +I have received errors when installing the OTF, TTF, and PFM fonts on +Windows 7 and 8 (didn't try others). -- 2.47.2 From 8b5da7535ba5134a1784d1edad43d60167b67262 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 8 Aug 2014 15:11:53 +0200 Subject: [PATCH 037/477] Fix: Build instructions were not clear enough. --- README.md | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 3004ae6..1ad6153 100644 --- a/README.md +++ b/README.md @@ -41,16 +41,6 @@ or: ``` sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols ``` - -Compile using the following: -``` -git clone https://github.com/Swordifish90/cool-old-term.git -cd cool-old-term/konsole-qml-plugin -qmake-qt5 && make && make install -cd .. -./cool-old-term -``` - --- **Arch Linux** @@ -73,16 +63,6 @@ Install dependencies: sudo zypper install libqt5-qtbase-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols libqt5-qtgraphicaleffects -Compile: - -```bash -git clone https://github.com/Swordifish90/cool-old-term.git -cd cool-old-term/konsole-qml-plugin -qmake-qt5 && make && make install -cd .. -./cool-old-term -``` - --- **Anyone else** @@ -101,7 +81,10 @@ git clone https://github.com/Swordifish90/cool-old-term.git # Build it cd cool-old-term cd konsole-qml-plugin + +# Compile (Fedora and OpenSUSE user should use qmake-qt5 instead of qmake) qmake && make && make install + cd .. # Have fun! -- 2.47.2 From 1c97a08b8d9c54b6ad01f0ba638ac66d55e3f1df Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 8 Aug 2014 22:57:51 +0200 Subject: [PATCH 038/477] Coefficients are now all passed as uniforms. This saves many shaders compilations when playing with settings. --- app/PreprocessedTerminal.qml | 6 +++-- app/ShaderTerminal.qml | 44 +++++++++++++++++++------------- app/frames/utils/FrameShader.qml | 5 ++-- 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 7720f49..a96f7df 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -227,6 +227,7 @@ Item{ anchors.fill: parent property variant source: source property variant blurredSource: (mBlur !== 0) ? blurredSource : undefined + property real blurCoefficient: (1.0 - motionBlurCoefficient) * fpsAttenuation property size virtual_resolution: parent.virtual_resolution property size delta: Qt.size((mScanlines == shadersettings.pixel_rasterization ? deltax : 0), mScanlines != shadersettings.no_rasterization ? deltay : 0) @@ -242,7 +243,8 @@ Item{ uniform highp vec2 virtual_resolution;" + (mBlur !== 0 ? - "uniform lowp sampler2D blurredSource;" + "uniform lowp sampler2D blurredSource; + uniform lowp float blurCoefficient;" : "") + "float rgb2grey(vec3 v){ @@ -263,7 +265,7 @@ Item{ (mBlur !== 0 ? "vec4 blur_color = texture2D(blurredSource, coords) * 256.0;" + - "blur_color.a = blur_color.a - blur_color.a * " + (1.0 - motionBlurCoefficient) * fpsAttenuation+ ";" + + "blur_color.a = blur_color.a - blur_color.a * blurCoefficient;" + "color = step(1.0, color.a) * color + step(color.a, 1.0) * blur_color;" : "") + diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index b4b12e1..06d4d7e 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -29,7 +29,7 @@ ShaderEffect { property variant rasterizationSource: terminal.rasterizationSource property variant noiseSource: terminal.staticNoiseSource property size txt_Size: Qt.size(frame.sourceRect.width, frame.sourceRect.height) - property real bloom: shadersettings.bloom_strength * 2.5 + property real bloom_strength: shadersettings.bloom_strength * 2.5 property int rasterization: shadersettings.rasterization @@ -52,7 +52,7 @@ ShaderEffect { property real disp_left: frame.item.displacementLeft * shadersettings.window_scaling property real disp_right: frame.item.displacementRight * shadersettings.window_scaling - property real brightness: shadersettings.brightness * 1.5 + 0.5 + property real screen_brightness: shadersettings.brightness * 1.5 + 0.5 property real time: timeManager.time property variant randomFunctionSource: randfuncsource @@ -94,22 +94,24 @@ ShaderEffect { varying highp vec2 qt_TexCoord0;" + (brightness_flickering !== 0.0 ?" - varying lowp float brightness;" : "") + + varying lowp float brightness; + uniform lowp float brightness_flickering;" : "") + (horizontal_sincronization !== 0.0 ?" - varying lowp float horizontal_distortion;" : "") + + varying lowp float horizontal_distortion; + uniform lowp float horizontal_sincronization;" : "") + " void main() { qt_TexCoord0.x = -"+str(disp_left)+"/txt_Size.x + qt_MultiTexCoord0.x / ((txt_Size.x -("+str(disp_left+disp_right)+")) / txt_Size.x);" + " qt_TexCoord0.y = -"+str(disp_top)+"/txt_Size.y + qt_MultiTexCoord0.y / ((txt_Size.y -("+str(disp_top+disp_bottom)+")) / txt_Size.y);" + " vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" + (brightness_flickering !== 0.0 ? " - brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * "+str(brightness_flickering)+";" + brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * brightness_flickering;" : "") + (horizontal_sincronization !== 0.0 ? " float randval = 1.5 * texture2D(randomFunctionSource,(vec2(1.0) -coords) * 0.5).g; - float negsinc = 1.0 - "+str(0.6*horizontal_sincronization)+"; - horizontal_distortion = step(negsinc, randval) * (randval - negsinc) * "+str(0.3*horizontal_sincronization)+";" + float negsinc = 1.0 - 0.6 * horizontal_sincronization;" + " + horizontal_distortion = step(negsinc, randval) * (randval - negsinc) * 0.3*horizontal_sincronization;" : "") + "gl_Position = qt_Matrix * qt_Vertex; @@ -124,18 +126,24 @@ ShaderEffect { uniform highp vec4 font_color; uniform highp vec4 background_color; - uniform highp sampler2D rasterizationSource;" + + uniform highp sampler2D rasterizationSource; + uniform lowp float screen_brightness;" + - (bloom !== 0 ? " - uniform highp sampler2D bloomSource;" : "") + + (bloom_strength !== 0 ? " + uniform highp sampler2D bloomSource; + uniform lowp float bloom_strength;" : "") + (noise_strength !== 0 ? " uniform highp float noise_strength;" : "") + (noise_strength !== 0 || jitter !== 0 ? " uniform lowp sampler2D noiseSource;" : "") + (screen_distorsion !== 0 ? " - uniform highp float screen_distorsion;" : "")+ + uniform highp float screen_distorsion;" : "") + (glowing_line_strength !== 0 ? " - uniform highp float glowing_line_strength;" : "")+ + uniform highp float glowing_line_strength;" : "") + + (chroma_color !== 0 ? " + uniform lowp float chroma_color;" : "") + + (jitter !== 0 ? " + uniform lowp float jitter;" : "") + (brightness_flickering !== 0 ? " varying lowp float brightness;" : "") + (horizontal_sincronization !== 0 ? " @@ -178,7 +186,7 @@ ShaderEffect { (jitter !== 0 ? " vec2 offset = vec2(texture2D(noiseSource, coords + fract(time / 57.0)).a, texture2D(noiseSource, coords + fract(time / 251.0)).a) - 0.5; - vec2 txt_coords = coords + offset * "+str(jitter)+";" + vec2 txt_coords = coords + offset * jitter;" : "vec2 txt_coords = coords;") + "float color = 0.0;" + @@ -192,7 +200,7 @@ ShaderEffect { (chroma_color !== 0 ? "vec4 realBackColor = texture2D(source, txt_coords);" + - "vec4 mixedColor = mix(font_color, realBackColor * font_color, "+ str(chroma_color) +");" + + "vec4 mixedColor = mix(font_color, realBackColor * font_color, chroma_color);" + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" @@ -203,19 +211,19 @@ ShaderEffect { "finalColor *= texture2D(rasterizationSource, coords).a;" + - (bloom !== 0 ? + (bloom_strength !== 0 ? "vec3 bloomColor = texture2D(bloomSource, coords).rgb;" + (chroma_color !== 0 ? - "bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, "+str(chroma_color)+");" + "bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chroma_color);" : "bloomColor = font_color.rgb * rgb2grey(bloomColor);") + - "finalColor += bloomColor * "+str(bloom)+";" + "finalColor += bloomColor * bloom_strength;" : "") + (brightness_flickering !== 0 ? " finalColor *= brightness;" : "") + - "gl_FragColor = vec4(finalColor *"+str(brightness)+", qt_Opacity);" + + "gl_FragColor = vec4(finalColor * screen_brightness, qt_Opacity);" + "}" onStatusChanged: if (log) console.log(log) //Print warning messages diff --git a/app/frames/utils/FrameShader.qml b/app/frames/utils/FrameShader.qml index 78a1142..041029f 100644 --- a/app/frames/utils/FrameShader.qml +++ b/app/frames/utils/FrameShader.qml @@ -47,7 +47,8 @@ ShaderEffect{ uniform sampler2D normals; uniform highp float screen_distorsion; uniform highp float ambient_light; - uniform highp float qt_Opacity;" + + uniform highp float qt_Opacity; + uniform lowp float chroma_color;" + (frameReflections ? "uniform sampler2D lightSource;" : "") + " @@ -83,7 +84,7 @@ ShaderEffect{ float clampedDotProd = clamp(dotProd, 0.05, 1.0); float diffuseReflection = clamp(screenLight * 1.5 * clampedDotProd, 0.0, 0.35); float reflectionAlpha = mix(1.0, 0.90, dotProd); - vec3 lightColor = mix(font_color.rgb * screenLight, font_color.rgb * realLightColor, "+chroma_color.toFixed(2)+");" + vec3 lightColor = mix(font_color.rgb * screenLight, font_color.rgb * realLightColor, chroma_color);" : " float diffuseReflection = 0.0; float reflectionAlpha = 1.0; -- 2.47.2 From 6b1d09955f1bd3aa3700eb31617f1b7cd083192d Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Sat, 9 Aug 2014 02:08:23 +0200 Subject: [PATCH 039/477] Update cool-old-term.desktop --- cool-old-term.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cool-old-term.desktop b/cool-old-term.desktop index df48bf2..785cc2a 100644 --- a/cool-old-term.desktop +++ b/cool-old-term.desktop @@ -4,7 +4,7 @@ Exec=qmlscene -I /usr/share/cool-old-term/{imports,app/main.qml} GenericName=Terminal emulator Icon=utilities-terminal MimeType= -Name=Cool Old Terminal +Name=Cool Old Term Path= Categories=Qt;System;TerminalEmulator; StartupNotify=true -- 2.47.2 From abb485f828d160ea6ebfaae3e0ffc5f9596f5c4f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 9 Aug 2014 14:45:01 +0200 Subject: [PATCH 040/477] Fixing checkable slider. It now behaves consistently and avoids binding loops. --- app/CheckableSlider.qml | 30 ++++++++++++++++++++++++------ app/SettingsEffectsTab.qml | 36 ++++++++++++++++++------------------ app/SettingsTerminalTab.qml | 9 +++++---- 3 files changed, 47 insertions(+), 28 deletions(-) diff --git a/app/CheckableSlider.qml b/app/CheckableSlider.qml index d8a952a..683317b 100644 --- a/app/CheckableSlider.qml +++ b/app/CheckableSlider.qml @@ -23,30 +23,48 @@ import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 RowLayout { - property bool enabled: true property alias name: check.text - property double value: (check.checked) ? _value : 0.0 - property alias _value: slider.value + + property double value property alias min_value: slider.minimumValue property alias max_value: slider.maximumValue property alias stepSize: slider.stepSize + signal newValue(real newValue); + id: setting_component anchors.left: parent.left anchors.right: parent.right spacing: 25 + onValueChanged: { + check.checked = !(value == 0); + if(check.checked) + slider.value = value; + } + CheckBox{ id: check implicitWidth: 150 - Component.onCompleted: checked = (_value !== 0); - enabled: parent.enabled + onClicked: { + if(!checked){ + checked = false; + slider.enabled = false; + newValue(0); + } else { + checked = true; + newValue(slider.value); + slider.enabled = true; + } + } } Slider{ id: slider stepSize: parent.stepSize Layout.fillWidth: true - enabled: check.checked && parent.enabled + onValueChanged: { + newValue(value); + } } Text{ id: textfield diff --git a/app/SettingsEffectsTab.qml b/app/SettingsEffectsTab.qml index a72a1fd..093801d 100644 --- a/app/SettingsEffectsTab.qml +++ b/app/SettingsEffectsTab.qml @@ -30,49 +30,49 @@ Tab{ anchors.fill: parent CheckableSlider{ name: qsTr("Bloom") - onValueChanged: shadersettings.bloom_strength = value - _value: shadersettings.bloom_strength + onNewValue: shadersettings.bloom_strength = newValue + value: shadersettings.bloom_strength } CheckableSlider{ name: qsTr("Motion Blur") - onValueChanged: shadersettings.motion_blur = value - _value: shadersettings.motion_blur + onNewValue: shadersettings.motion_blur = newValue + value: shadersettings.motion_blur } CheckableSlider{ name: qsTr("Noise") - onValueChanged: shadersettings.noise_strength = value - _value: shadersettings.noise_strength + onNewValue: shadersettings.noise_strength = newValue + value: shadersettings.noise_strength } CheckableSlider{ name: qsTr("Jitter") - onValueChanged: shadersettings.jitter = value - _value: shadersettings.jitter + onNewValue: shadersettings.jitter = newValue + value: shadersettings.jitter } CheckableSlider{ name: qsTr("Glow") - onValueChanged: shadersettings.glowing_line_strength = value; - _value: shadersettings.glowing_line_strength + onNewValue: shadersettings.glowing_line_strength = newValue; + value: shadersettings.glowing_line_strength } CheckableSlider{ name: qsTr("Screen distortion") - onValueChanged: shadersettings.screen_distortion = value; - _value: shadersettings.screen_distortion; + onNewValue: shadersettings.screen_distortion = newValue; + value: shadersettings.screen_distortion; } CheckableSlider{ name: qsTr("Ambient light") - onValueChanged: shadersettings.ambient_light = value; - _value: shadersettings.ambient_light + onNewValue: shadersettings.ambient_light = newValue; + value: shadersettings.ambient_light enabled: shadersettings.frames_index !== 0 } CheckableSlider{ name: qsTr("Brightness flickering") - onValueChanged: shadersettings.brightness_flickering= value; - _value: shadersettings.brightness_flickering; + onNewValue: shadersettings.brightness_flickering = newValue; + value: shadersettings.brightness_flickering; } CheckableSlider{ name: qsTr("Horizontal flickering") - onValueChanged: shadersettings.horizontal_sincronization = value; - _value: shadersettings.horizontal_sincronization; + onNewValue: shadersettings.horizontal_sincronization = newValue; + value: shadersettings.horizontal_sincronization; } } } diff --git a/app/SettingsTerminalTab.qml b/app/SettingsTerminalTab.qml index f8116c8..af1c067 100644 --- a/app/SettingsTerminalTab.qml +++ b/app/SettingsTerminalTab.qml @@ -115,13 +115,14 @@ Tab{ Layout.fillWidth: true CheckableSlider{ name: qsTr("Chroma Color") - onValueChanged: shadersettings.chroma_color = value - _value: shadersettings.chroma_color + onNewValue: shadersettings.chroma_color = newValue + value: shadersettings.chroma_color } CheckableSlider{ name: qsTr("Saturation Color") - onValueChanged: shadersettings.saturation_color = value - _value: shadersettings.saturation_color + onNewValue: shadersettings.saturation_color = newValue + value: shadersettings.saturation_color + enabled: shadersettings.chroma_color !== 0 } } } -- 2.47.2 From d6288518c46799b930c8b727fcdd47fbe0d242ed Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 11 Aug 2014 19:23:03 +0200 Subject: [PATCH 041/477] Added RGB shift effect. --- app/ApplicationSettings.qml | 23 ++++++++++++++--------- app/SettingsEffectsTab.qml | 6 ++++++ app/ShaderTerminal.qml | 16 +++++++++++++++- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/app/ApplicationSettings.qml b/app/ApplicationSettings.qml index d3df275..faa56a6 100644 --- a/app/ApplicationSettings.qml +++ b/app/ApplicationSettings.qml @@ -77,6 +77,8 @@ Item{ property real horizontal_sincronization: 0.08 property real brightness_flickering: 0.1 + property real rgb_shift: 0.0 + readonly property int no_rasterization: 0 readonly property int scanline_rasterization: 1 readonly property int pixel_rasterization: 2 @@ -186,6 +188,7 @@ Item{ bloom_strength: bloom_strength, rasterization: rasterization, jitter: jitter, + rgb_shift: rgb_shift, brightness: brightness, contrast: contrast, ambient_light: ambient_light, @@ -258,6 +261,8 @@ Item{ jitter = settings.jitter !== undefined ? settings.jitter : jitter; + rgb_shift = settings.rgb_shift !== undefined ? settings.rgb_shift : rgb_shift; + ambient_light = settings.ambient_light !== undefined ? settings.ambient_light : ambient_light; contrast = settings.contrast !== undefined ? settings.contrast : contrast; brightness = settings.brightness !== undefined ? settings.brightness : brightness; @@ -315,47 +320,47 @@ Item{ id: profileslist ListElement{ text: "Default Amber" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Default Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Default Scanlines" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Default Pixelated" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Apple ][" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Vintage" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "IBM Dos" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1,"saturation_color":0,"rgb_shift":0.5}' builtin: true } ListElement{ text: "IBM 3278" - obj_string: '{"ambient_light":0.1,"background_color":"#000000","bloom_strength":0.15,"brightness":0.5,"brightness_flickering":0,"contrast":0.95,"fontIndex":8,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0,"horizontal_sincronization":0,"jitter":0,"motion_blur":0.6,"noise_strength":0,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1}' + obj_string: '{"ambient_light":0.1,"background_color":"#000000","bloom_strength":0.15,"brightness":0.5,"brightness_flickering":0,"contrast":0.95,"fontIndex":8,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0,"horizontal_sincronization":0,"jitter":0,"motion_blur":0.6,"noise_strength":0,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } ListElement{ text: "Transparent Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681,"chroma_color":0,"saturation_color":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' builtin: true } } diff --git a/app/SettingsEffectsTab.qml b/app/SettingsEffectsTab.qml index 093801d..2d71b48 100644 --- a/app/SettingsEffectsTab.qml +++ b/app/SettingsEffectsTab.qml @@ -74,6 +74,12 @@ Tab{ onNewValue: shadersettings.horizontal_sincronization = newValue; value: shadersettings.horizontal_sincronization; } + CheckableSlider{ + name: qsTr("RGB shift") + onNewValue: shadersettings.rgb_shift = newValue; + value: shadersettings.rgb_shift; + enabled: shadersettings.chroma_color !== 0 + } } } } diff --git a/app/ShaderTerminal.qml b/app/ShaderTerminal.qml index 06d4d7e..bdd3a87 100644 --- a/app/ShaderTerminal.qml +++ b/app/ShaderTerminal.qml @@ -42,6 +42,8 @@ ShaderEffect { property real chroma_color: shadersettings.chroma_color; property real saturation_color: shadersettings.saturation_color; + property real rgb_shift: shadersettings.rgb_shift * 0.2 + property real brightness_flickering: shadersettings.brightness_flickering property real horizontal_sincronization: shadersettings.horizontal_sincronization @@ -144,6 +146,8 @@ ShaderEffect { uniform lowp float chroma_color;" : "") + (jitter !== 0 ? " uniform lowp float jitter;" : "") + + (rgb_shift !== 0 ? " + uniform lowp float rgb_shift;" : "") + (brightness_flickering !== 0 ? " varying lowp float brightness;" : "") + (horizontal_sincronization !== 0 ? " @@ -199,7 +203,17 @@ ShaderEffect { color += randomPass(coords) * glowing_line_strength;" : "") + (chroma_color !== 0 ? - "vec4 realBackColor = texture2D(source, txt_coords);" + + (rgb_shift !== 0 ? " + float rgb_noise = abs(texture2D(noiseSource, vec2(fract(time/(1024.0 * 256.0)), fract(time/(1024.0*1024.0)))).a - 0.5); + vec4 realBackColor = texture2D(source, txt_coords); + vec2 rcolor = texture2D(source, txt_coords + vec2(0.1, 0.0) * rgb_shift * rgb_noise).ra; + vec2 bcolor = texture2D(source, txt_coords - vec2(0.1, 0.0) * rgb_shift * rgb_noise).ba; + realBackColor.r = rcolor.x; + realBackColor.b = bcolor.x; + realBackColor.a = 0.33 * (realBackColor.a + rcolor.y + bcolor.y);" + : + "vec4 realBackColor = texture2D(source, txt_coords);") + + "vec4 mixedColor = mix(font_color, realBackColor * font_color, chroma_color);" + "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + -- 2.47.2 From f7354e54dc590c5236853c6ac42854ebc48cf98c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 11 Aug 2014 21:51:50 +0200 Subject: [PATCH 042/477] Fixing keytabs (thank you yurivkhan)! --- app/PreprocessedTerminal.qml | 2 +- konsole-qml-plugin/src/KeyboardTranslator.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index a96f7df..725a2cc 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -79,7 +79,7 @@ Item{ session: KSession { id: ksession - kbScheme: "linux" + kbScheme: "default" onFinished: { Qt.quit() diff --git a/konsole-qml-plugin/src/KeyboardTranslator.cpp b/konsole-qml-plugin/src/KeyboardTranslator.cpp index a2ad22c..e87631d 100644 --- a/konsole-qml-plugin/src/KeyboardTranslator.cpp +++ b/konsole-qml-plugin/src/KeyboardTranslator.cpp @@ -439,7 +439,7 @@ bool KeyboardTranslatorReader::parseAsStateFlag(const QString& item , KeyboardTr bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode) { QKeySequence sequence = QKeySequence::fromString(item); - if ( !sequence.isEmpty() ) + if ( !sequence.isEmpty() && sequence[0] != Qt::Key_unknown ) { keyCode = sequence[0]; @@ -453,6 +453,12 @@ bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode keyCode = Qt::Key_PageUp; else if ( item == "next" ) keyCode = Qt::Key_PageDown; + else if ( item == "bracketleft" ) + keyCode = Qt::Key_BracketLeft; + else if ( item == "backslash" ) + keyCode = Qt::Key_Backslash; + else if ( item == "bracketright" ) + keyCode = Qt::Key_BracketRight; else return false; -- 2.47.2 From cad496b1fb8e9e5e286ac197632f261be8a611c9 Mon Sep 17 00:00:00 2001 From: Thomas Klausner Date: Tue, 12 Aug 2014 22:23:29 +0200 Subject: [PATCH 043/477] Fix NetBSD case. NetBSD provides util.h, not libutil. --- konsole-qml-plugin/src/kpty.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/konsole-qml-plugin/src/kpty.cpp b/konsole-qml-plugin/src/kpty.cpp index 4498a97..5ea5200 100644 --- a/konsole-qml-plugin/src/kpty.cpp +++ b/konsole-qml-plugin/src/kpty.cpp @@ -25,9 +25,12 @@ #include "kpty_p.h" -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) #define HAVE_LOGIN #define HAVE_LIBUTIL_H +#elif defined(__NetBSD__) +#define HAVE_LOGIN +#define HAVE_UTIL_H #endif #ifdef __sgi -- 2.47.2 From 93c8c0f21ff347af39fb1482b304dd67ed3729d4 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 12 Aug 2014 22:44:21 +0200 Subject: [PATCH 044/477] Revert to linux kb-scheme. --- app/PreprocessedTerminal.qml | 2 +- konsole-qml-plugin/Makefile | 5523 ---------------------------------- 2 files changed, 1 insertion(+), 5524 deletions(-) delete mode 100644 konsole-qml-plugin/Makefile diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 725a2cc..a96f7df 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -79,7 +79,7 @@ Item{ session: KSession { id: ksession - kbScheme: "default" + kbScheme: "linux" onFinished: { Qt.quit() diff --git a/konsole-qml-plugin/Makefile b/konsole-qml-plugin/Makefile deleted file mode 100644 index 97f3090..0000000 --- a/konsole-qml-plugin/Makefile +++ /dev/null @@ -1,5523 +0,0 @@ -############################################################################# -# Makefile for building: libkdekonsole.so -# Generated by qmake (3.0) (Qt 5.2.1) -# Project: konsole-qml-plugin.pro -# Template: lib -# Command: /usr/lib/x86_64-linux-gnu/qt5/bin/qmake -o Makefile konsole-qml-plugin.pro -############################################################################# - -MAKEFILE = Makefile - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DHAVE_POSIX_OPENPT -DHAVE_SYS_TIME_H -DHAVE_UPDWTMPX -DQ_WS_UBUNTU -DQT_NO_DEBUG -DQT_PLUGIN -DQT_QUICK_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -CFLAGS = -m64 -pipe -O2 -fvisibility=hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES) -CXXFLAGS = -m64 -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES) -INCPATH = -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I.moc -LINK = g++ -LFLAGS = -m64 -Wl,-O1 -shared -LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5Quick -L/usr/lib/x86_64-linux-gnu -lQt5Qml -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread -AR = ar cqs -RANLIB = -QMAKE = /usr/lib/x86_64-linux-gnu/qt5/bin/qmake -TAR = tar -cf -COMPRESS = gzip -9f -COPY = cp -f -SED = sed -COPY_FILE = cp -f -COPY_DIR = cp -f -R -STRIP = strip -INSTALL_FILE = install -m 644 -p -INSTALL_DIR = $(COPY_DIR) -INSTALL_PROGRAM = install -m 755 -p -DEL_FILE = rm -f -SYMLINK = ln -f -s -DEL_DIR = rmdir -MOVE = mv -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p - -####### Output directory - -OBJECTS_DIR = .obj/ - -####### Files - -SOURCES = src/plugin.cpp \ - src/Pty.cpp \ - src/kptyprocess.cpp \ - src/kptydevice.cpp \ - src/kpty.cpp \ - src/kprocess.cpp \ - src/ShellCommand.cpp \ - src/Vt102Emulation.cpp \ - src/tools.cpp \ - src/Session.cpp \ - src/Screen.cpp \ - src/KeyboardTranslator.cpp \ - src/Emulation.cpp \ - src/History.cpp \ - src/BlockArray.cpp \ - src/TerminalCharacterDecoder.cpp \ - src/konsole_wcwidth.cpp \ - src/ScreenWindow.cpp \ - src/Filter.cpp \ - src/ColorScheme.cpp \ - src/TerminalDisplay.cpp \ - src/ksession.cpp .moc/moc_plugin.cpp \ - .moc/moc_Pty.cpp \ - .moc/moc_kptyprocess.cpp \ - .moc/moc_kptydevice.cpp \ - .moc/moc_kprocess.cpp \ - .moc/moc_Vt102Emulation.cpp \ - .moc/moc_Session.cpp \ - .moc/moc_Emulation.cpp \ - .moc/moc_ScreenWindow.cpp \ - .moc/moc_Filter.cpp \ - .moc/moc_TerminalDisplay.cpp \ - .moc/moc_ksession.cpp -OBJECTS = .obj/plugin.o \ - .obj/Pty.o \ - .obj/kptyprocess.o \ - .obj/kptydevice.o \ - .obj/kpty.o \ - .obj/kprocess.o \ - .obj/ShellCommand.o \ - .obj/Vt102Emulation.o \ - .obj/tools.o \ - .obj/Session.o \ - .obj/Screen.o \ - .obj/KeyboardTranslator.o \ - .obj/Emulation.o \ - .obj/History.o \ - .obj/BlockArray.o \ - .obj/TerminalCharacterDecoder.o \ - .obj/konsole_wcwidth.o \ - .obj/ScreenWindow.o \ - .obj/Filter.o \ - .obj/ColorScheme.o \ - .obj/TerminalDisplay.o \ - .obj/ksession.o \ - .obj/moc_plugin.o \ - .obj/moc_Pty.o \ - .obj/moc_kptyprocess.o \ - .obj/moc_kptydevice.o \ - .obj/moc_kprocess.o \ - .obj/moc_Vt102Emulation.o \ - .obj/moc_Session.o \ - .obj/moc_Emulation.o \ - .obj/moc_ScreenWindow.o \ - .obj/moc_Filter.o \ - .obj/moc_TerminalDisplay.o \ - .obj/moc_ksession.o -DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - konsole-qml-plugin.pro \ - konsole-qml-plugin.pro -QMAKE_TARGET = kdekonsole -DESTDIR = #avoid trailing-slash linebreak -TARGET = libkdekonsole.so -TARGETD = libkdekonsole.so - - -first: all -####### Implicit rules - -.SUFFIXES: .o .c .cpp .cc .cxx .C - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" - -.cc.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" - -.cxx.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" - -.C.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" - -.c.o: - $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" - -####### Build rules - -all: Makefile $(TARGET) - -$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) - -$(DEL_FILE) $(TARGET) - $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) - - - -Makefile: konsole-qml-plugin.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - konsole-qml-plugin.pro \ - /usr/lib/x86_64-linux-gnu/libQt5Quick.prl \ - /usr/lib/x86_64-linux-gnu/libQt5Qml.prl \ - /usr/lib/x86_64-linux-gnu/libQt5Network.prl \ - /usr/lib/x86_64-linux-gnu/libQt5Core.prl \ - /usr/lib/x86_64-linux-gnu/libQt5Gui.prl \ - /usr/lib/x86_64-linux-gnu/libQt5Widgets.prl - $(QMAKE) -o Makefile konsole-qml-plugin.pro -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: -konsole-qml-plugin.pro: -/usr/lib/x86_64-linux-gnu/libQt5Quick.prl: -/usr/lib/x86_64-linux-gnu/libQt5Qml.prl: -/usr/lib/x86_64-linux-gnu/libQt5Network.prl: -/usr/lib/x86_64-linux-gnu/libQt5Core.prl: -/usr/lib/x86_64-linux-gnu/libQt5Gui.prl: -/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl: -qmake: FORCE - @$(QMAKE) -o Makefile konsole-qml-plugin.pro - -qmake_all: FORCE - -dist: - @test -d .obj/kdekonsole1.0.0 || mkdir -p .obj/kdekonsole1.0.0 - $(COPY_FILE) --parents $(SOURCES) $(DIST) .obj/kdekonsole1.0.0/ && $(COPY_FILE) --parents src/plugin.h src/Pty.h src/kptyprocess.h src/kptydevice.h src/kpty.h src/kpty_p.h src/kprocess.h src/ShellCommand.h src/Vt102Emulation.h src/tools.h src/Session.h src/Screen.h src/KeyboardTranslator.h src/Emulation.h src/Character.h src/History.h src/CharacterColor.h src/BlockArray.h src/TerminalCharacterDecoder.h src/konsole_wcwidth.h src/ScreenWindow.h src/DefaultTranslatorText.h src/LineFont.h src/Filter.h src/ExtendedDefaultTranslator.h src/ColorTables.h src/ColorScheme.h src/TerminalDisplay.h src/ksession.h .obj/kdekonsole1.0.0/ && $(COPY_FILE) --parents src/plugin.cpp src/Pty.cpp src/kptyprocess.cpp src/kptydevice.cpp src/kpty.cpp src/kprocess.cpp src/ShellCommand.cpp src/Vt102Emulation.cpp src/tools.cpp src/Session.cpp src/Screen.cpp src/KeyboardTranslator.cpp src/Emulation.cpp src/History.cpp src/BlockArray.cpp src/TerminalCharacterDecoder.cpp src/konsole_wcwidth.cpp src/ScreenWindow.cpp src/Filter.cpp src/ColorScheme.cpp src/TerminalDisplay.cpp src/ksession.cpp .obj/kdekonsole1.0.0/ && (cd `dirname .obj/kdekonsole1.0.0` && $(TAR) kdekonsole1.0.0.tar kdekonsole1.0.0 && $(COMPRESS) kdekonsole1.0.0.tar) && $(MOVE) `dirname .obj/kdekonsole1.0.0`/kdekonsole1.0.0.tar.gz . && $(DEL_FILE) -r .obj/kdekonsole1.0.0 - - -clean:compiler_clean - -$(DEL_FILE) $(OBJECTS) - -$(DEL_FILE) *~ core *.core - - -####### Sub-libraries - -distclean: clean - -$(DEL_FILE) $(TARGET) - -$(DEL_FILE) Makefile - - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -check: first - -compiler_rcc_make_all: -compiler_rcc_clean: -compiler_moc_header_make_all: .moc/moc_plugin.cpp .moc/moc_Pty.cpp .moc/moc_kptyprocess.cpp .moc/moc_kptydevice.cpp .moc/moc_kprocess.cpp .moc/moc_Vt102Emulation.cpp .moc/moc_Session.cpp .moc/moc_Emulation.cpp .moc/moc_ScreenWindow.cpp .moc/moc_Filter.cpp .moc/moc_TerminalDisplay.cpp .moc/moc_ksession.cpp -compiler_moc_header_clean: - -$(DEL_FILE) .moc/moc_plugin.cpp .moc/moc_Pty.cpp .moc/moc_kptyprocess.cpp .moc/moc_kptydevice.cpp .moc/moc_kprocess.cpp .moc/moc_Vt102Emulation.cpp .moc/moc_Session.cpp .moc/moc_Emulation.cpp .moc/moc_ScreenWindow.cpp .moc/moc_Filter.cpp .moc/moc_TerminalDisplay.cpp .moc/moc_ksession.cpp -.moc/moc_plugin.cpp: src/TerminalDisplay.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QPointer \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - src/ksession.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h \ - /usr/include/qt5/QtQml/QQmlEngine \ - /usr/include/qt5/QtQml/qqmlengine.h \ - /usr/include/qt5/QtQml/qjsengine.h \ - /usr/include/qt5/QtQml/qqmldebug.h \ - /usr/include/qt5/QtQml/QQmlExtensionPlugin \ - /usr/include/qt5/QtQml/qqmlextensionplugin.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/QUrl \ - /usr/include/qt5/QtQml/qqmlextensioninterface.h \ - src/plugin.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/plugin.h -o .moc/moc_plugin.cpp - -.moc/moc_Pty.cpp: /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QSize \ - /usr/include/qt5/QtCore/qsize.h \ - src/kptyprocess.h \ - src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - src/Pty.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Pty.h -o .moc/moc_Pty.cpp - -.moc/moc_kptyprocess.cpp: src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - src/kptyprocess.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kptyprocess.h -o .moc/moc_kptyprocess.cpp - -.moc/moc_kptydevice.cpp: src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - src/kptydevice.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kptydevice.h -o .moc/moc_kptydevice.cpp - -.moc/moc_kprocess.cpp: /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/kprocess.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kprocess.h -o .moc/moc_kprocess.cpp - -.moc/moc_Vt102Emulation.cpp: /usr/include/qt5/QtGui/QKeyEvent \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - src/Emulation.h \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/QTextStream \ - src/Screen.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - src/Vt102Emulation.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Vt102Emulation.h -o .moc/moc_Vt102Emulation.cpp - -.moc/moc_Session.cpp: /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qcursor.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - src/Session.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Session.h -o .moc/moc_Session.cpp - -.moc/moc_Emulation.cpp: /usr/include/qt5/QtGui/QKeyEvent \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - src/Emulation.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Emulation.h -o .moc/moc_Emulation.cpp - -.moc/moc_ScreenWindow.cpp: /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/QPoint \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - src/Character.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qpair.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - src/ScreenWindow.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/ScreenWindow.h -o .moc/moc_ScreenWindow.cpp - -.moc/moc_Filter.cpp: /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - src/Filter.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Filter.h -o .moc/moc_Filter.cpp - -.moc/moc_TerminalDisplay.cpp: /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QPointer \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - src/ksession.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h \ - src/TerminalDisplay.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/TerminalDisplay.h -o .moc/moc_TerminalDisplay.cpp - -.moc/moc_ksession.cpp: /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qcursor.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - src/ksession.h - /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/ksession.h -o .moc/moc_ksession.cpp - -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: compiler_moc_header_clean - -####### Compile - -.obj/plugin.o: src/plugin.cpp /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/QDir \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - src/plugin.h \ - src/TerminalDisplay.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/QPointer \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - src/ksession.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h \ - /usr/include/qt5/QtQml/QQmlEngine \ - /usr/include/qt5/QtQml/qqmlengine.h \ - /usr/include/qt5/QtQml/qjsengine.h \ - /usr/include/qt5/QtQml/qqmldebug.h \ - /usr/include/qt5/QtQml/QQmlExtensionPlugin \ - /usr/include/qt5/QtQml/qqmlextensionplugin.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/QUrl \ - /usr/include/qt5/QtQml/qqmlextensioninterface.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/plugin.o src/plugin.cpp - -.obj/Pty.o: src/Pty.cpp src/Pty.h \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QSize \ - /usr/include/qt5/QtCore/qsize.h \ - src/kptyprocess.h \ - src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Pty.o src/Pty.cpp - -.obj/kptyprocess.o: src/kptyprocess.cpp src/kptyprocess.h \ - src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kptyprocess.o src/kptyprocess.cpp - -.obj/kptydevice.o: src/kptydevice.cpp src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - /usr/include/qt5/QtCore/QSocketNotifier - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kptydevice.o src/kptydevice.cpp - -.obj/kpty.o: src/kpty.cpp src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtCore/QByteArray - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kpty.o src/kpty.cpp - -.obj/kprocess.o: src/kprocess.cpp src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kprocess.o src/kprocess.cpp - -.obj/ShellCommand.o: src/ShellCommand.cpp src/ShellCommand.h \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ShellCommand.o src/ShellCommand.cpp - -.obj/Vt102Emulation.o: src/Vt102Emulation.cpp src/Vt102Emulation.h \ - /usr/include/qt5/QtGui/QKeyEvent \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - src/Emulation.h \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/QTextStream \ - src/Screen.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QByteRef \ - src/KeyboardTranslator.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtGui/QKeySequence \ - /usr/include/qt5/QtCore/QMetaType - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Vt102Emulation.o src/Vt102Emulation.cpp - -.obj/tools.o: src/tools.cpp src/tools.h \ - /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/QCoreApplication \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/QDir \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QtDebug \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/tools.o src/tools.cpp - -.obj/Session.o: src/Session.cpp src/Session.h \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qcursor.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/QGuiApplication \ - /usr/include/qt5/QtGui/qguiapplication.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtGui/qinputmethod.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/QByteRef \ - /usr/include/qt5/QtCore/QDir \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/QFile \ - /usr/include/qt5/QtCore/QRegExp \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - src/Pty.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QSize \ - src/kptyprocess.h \ - src/kprocess.h \ - /usr/include/qt5/QtCore/QProcess \ - src/kptydevice.h \ - src/kpty_p.h \ - src/kpty.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - src/TerminalDisplay.h \ - /usr/include/qt5/QtCore/QPointer \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - src/ksession.h \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h \ - src/ShellCommand.h \ - src/Vt102Emulation.h \ - /usr/include/qt5/QtGui/QKeyEvent \ - src/Emulation.h \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/QTextStream \ - src/Screen.h \ - /usr/include/qt5/QtCore/QVarLengthArray - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Session.o src/Session.cpp - -.obj/Screen.o: src/Screen.cpp src/Screen.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/Character.h \ - /usr/include/qt5/QtCore/QHash \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - /usr/include/qt5/QtCore/QDate \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - src/konsole_wcwidth.h \ - /usr/include/qt5/QtCore/QString \ - src/TerminalCharacterDecoder.h \ - /usr/include/qt5/QtCore/QList - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Screen.o src/Screen.cpp - -.obj/KeyboardTranslator.o: src/KeyboardTranslator.cpp src/KeyboardTranslator.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtGui/QKeySequence \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/QMetaType \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/QVarLengthArray \ - /usr/include/qt5/QtCore/QBuffer \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/QFile \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/QFileInfo \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QDir \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/QtDebug \ - src/tools.h \ - /usr/include/qt5/QtCore/QString - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/KeyboardTranslator.o src/KeyboardTranslator.cpp - -.obj/Emulation.o: src/Emulation.cpp src/Emulation.h \ - /usr/include/qt5/QtGui/QKeyEvent \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QGuiApplication \ - /usr/include/qt5/QtGui/qguiapplication.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtGui/qinputmethod.h \ - /usr/include/qt5/QtGui/QClipboard \ - /usr/include/qt5/QtGui/qclipboard.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - /usr/include/qt5/QtCore/QThread \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/QTime \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - src/KeyboardTranslator.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtGui/QKeySequence \ - /usr/include/qt5/QtCore/QMetaType \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/Screen.h \ - /usr/include/qt5/QtCore/QRect \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - src/TerminalCharacterDecoder.h \ - src/ScreenWindow.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QPoint - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Emulation.o src/Emulation.cpp - -.obj/History.o: src/History.cpp src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QtDebug \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/History.o src/History.cpp - -.obj/BlockArray.o: src/BlockArray.cpp src/BlockArray.h \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/BlockArray.o src/BlockArray.cpp - -.obj/TerminalCharacterDecoder.o: src/TerminalCharacterDecoder.cpp src/TerminalCharacterDecoder.h \ - src/Character.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qpair.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - src/konsole_wcwidth.h \ - /usr/include/qt5/QtCore/QString - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/TerminalCharacterDecoder.o src/TerminalCharacterDecoder.cpp - -.obj/konsole_wcwidth.o: src/konsole_wcwidth.cpp src/konsole_wcwidth.h \ - /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/konsole_wcwidth.o src/konsole_wcwidth.cpp - -.obj/ScreenWindow.o: src/ScreenWindow.cpp src/ScreenWindow.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/QPoint \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - src/Character.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qpair.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QtDebug \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - src/Screen.h \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ScreenWindow.o src/ScreenWindow.cpp - -.obj/Filter.o: src/Filter.cpp src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtWidgets/QApplication \ - /usr/include/qt5/QtWidgets/qapplication.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtWidgets/qdesktopwidget.h \ - /usr/include/qt5/QtGui/qguiapplication.h \ - /usr/include/qt5/QtGui/qinputmethod.h \ - /usr/include/qt5/QtGui/QClipboard \ - /usr/include/qt5/QtGui/qclipboard.h \ - /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtCore/QTextStream \ - /usr/include/qt5/QtCore/QSharedData \ - /usr/include/qt5/QtCore/QFile \ - /usr/include/qt5/QtGui/QDesktopServices \ - /usr/include/qt5/QtGui/qdesktopservices.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/QUrl \ - src/TerminalCharacterDecoder.h \ - src/konsole_wcwidth.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Filter.o src/Filter.cpp - -.obj/ColorScheme.o: src/ColorScheme.cpp src/ColorScheme.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QMetaType \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/QIODevice \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/QSet \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/QSettings \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - src/tools.h \ - /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtGui/QBrush \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/QFile \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtCore/QFileInfo \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/QtDebug \ - /usr/include/qt5/QtCore/QDir \ - /usr/include/qt5/QtCore/qdir.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ColorScheme.o src/ColorScheme.cpp - -.obj/TerminalDisplay.o: src/TerminalDisplay.cpp src/TerminalDisplay.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QPointer \ - /usr/include/qt5/QtCore/qpointer.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qcursor.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QRegExp \ - src/Character.h \ - src/CharacterColor.h \ - src/ksession.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - src/BlockArray.h \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h \ - /usr/include/qt5/QtQuick/QtQuick \ - /usr/include/qt5/QtQuick/QtQuickDepends \ - /usr/include/qt5/QtCore/QtCore \ - /usr/include/qt5/QtCore/QtCoreDepends \ - /usr/include/qt5/QtCore/qabstractanimation.h \ - /usr/include/qt5/QtCore/qanimationgroup.h \ - /usr/include/qt5/QtCore/qparallelanimationgroup.h \ - /usr/include/qt5/QtCore/qpauseanimation.h \ - /usr/include/qt5/QtCore/qpropertyanimation.h \ - /usr/include/qt5/QtCore/qvariantanimation.h \ - /usr/include/qt5/QtCore/qeasingcurve.h \ - /usr/include/qt5/QtCore/qsequentialanimationgroup.h \ - /usr/include/qt5/QtCore/qtextcodec.h \ - /usr/include/qt5/QtCore/qendian.h \ - /usr/include/qt5/QtCore/qlibraryinfo.h \ - /usr/include/qt5/QtCore/qdatetime.h \ - /usr/include/qt5/QtCore/qnumeric.h \ - /usr/include/qt5/QtCore/qbuffer.h \ - /usr/include/qt5/QtCore/qdir.h \ - /usr/include/qt5/QtCore/qfileinfo.h \ - /usr/include/qt5/QtCore/qdiriterator.h \ - /usr/include/qt5/QtCore/qfileselector.h \ - /usr/include/qt5/QtCore/qfilesystemwatcher.h \ - /usr/include/qt5/QtCore/qlockfile.h \ - /usr/include/qt5/QtCore/qloggingcategory.h \ - /usr/include/qt5/QtCore/qprocess.h \ - /usr/include/qt5/QtCore/qresource.h \ - /usr/include/qt5/QtCore/qsavefile.h \ - /usr/include/qt5/QtCore/qsettings.h \ - /usr/include/qt5/QtCore/qstandardpaths.h \ - /usr/include/qt5/QtCore/qtemporarydir.h \ - /usr/include/qt5/QtCore/QScopedPointer \ - /usr/include/qt5/QtCore/qabstractitemmodel.h \ - /usr/include/qt5/QtCore/qabstractproxymodel.h \ - /usr/include/qt5/QtCore/qidentityproxymodel.h \ - /usr/include/qt5/QtCore/qitemselectionmodel.h \ - /usr/include/qt5/QtCore/qsortfilterproxymodel.h \ - /usr/include/qt5/QtCore/qstringlistmodel.h \ - /usr/include/qt5/QtCore/qjsonarray.h \ - /usr/include/qt5/QtCore/qjsonvalue.h \ - /usr/include/qt5/QtCore/qjsondocument.h \ - /usr/include/qt5/QtCore/qjsonobject.h \ - /usr/include/qt5/QtCore/qabstracteventdispatcher.h \ - /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \ - /usr/include/qt5/QtCore/qmath.h \ - /usr/include/qt5/QtCore/qmimedata.h \ - /usr/include/qt5/QtCore/qobjectcleanuphandler.h \ - /usr/include/qt5/QtCore/qsharedmemory.h \ - /usr/include/qt5/QtCore/qsignalmapper.h \ - /usr/include/qt5/QtCore/qsocketnotifier.h \ - /usr/include/qt5/QtCore/qsystemsemaphore.h \ - /usr/include/qt5/QtCore/qtranslator.h \ - /usr/include/qt5/QtCore/qwineventnotifier.h \ - /usr/include/qt5/QtCore/qmimedatabase.h \ - /usr/include/qt5/QtCore/qmimetype.h \ - /usr/include/qt5/QtCore/qfactoryinterface.h \ - /usr/include/qt5/QtCore/qlibrary.h \ - /usr/include/qt5/QtCore/qplugin.h \ - /usr/include/qt5/QtCore/qpluginloader.h \ - /usr/include/qt5/QtCore/quuid.h \ - /usr/include/qt5/QtCore/qabstractstate.h \ - /usr/include/qt5/QtCore/qabstracttransition.h \ - /usr/include/qt5/QtCore/qeventtransition.h \ - /usr/include/qt5/QtCore/qfinalstate.h \ - /usr/include/qt5/QtCore/qhistorystate.h \ - /usr/include/qt5/QtCore/qsignaltransition.h \ - /usr/include/qt5/QtCore/qstate.h \ - /usr/include/qt5/QtCore/qstatemachine.h \ - /usr/include/qt5/QtCore/qexception.h \ - /usr/include/qt5/QtCore/qfuture.h \ - /usr/include/qt5/QtCore/qfutureinterface.h \ - /usr/include/qt5/QtCore/qrunnable.h \ - /usr/include/qt5/QtCore/qresultstore.h \ - /usr/include/qt5/QtCore/qfuturesynchronizer.h \ - /usr/include/qt5/QtCore/qfuturewatcher.h \ - /usr/include/qt5/QtCore/qreadwritelock.h \ - /usr/include/qt5/QtCore/qsemaphore.h \ - /usr/include/qt5/QtCore/qthread.h \ - /usr/include/qt5/QtCore/qthreadpool.h \ - /usr/include/qt5/QtCore/qthreadstorage.h \ - /usr/include/qt5/QtCore/qwaitcondition.h \ - /usr/include/qt5/QtCore/qarraydataops.h \ - /usr/include/qt5/QtCore/qarraydatapointer.h \ - /usr/include/qt5/QtCore/qbytearraymatcher.h \ - /usr/include/qt5/QtCore/qcache.h \ - /usr/include/qt5/QtCore/qcollator.h \ - /usr/include/qt5/QtCore/qcommandlineoption.h \ - /usr/include/qt5/QtCore/qcommandlineparser.h \ - /usr/include/qt5/QtCore/qcryptographichash.h \ - /usr/include/qt5/QtCore/qelapsedtimer.h \ - /usr/include/qt5/QtCore/qlinkedlist.h \ - /usr/include/qt5/QtCore/qmessageauthenticationcode.h \ - /usr/include/qt5/QtCore/qqueue.h \ - /usr/include/qt5/QtCore/qregularexpression.h \ - /usr/include/qt5/QtCore/qscopedvaluerollback.h \ - /usr/include/qt5/QtCore/qstack.h \ - /usr/include/qt5/QtCore/qtextboundaryfinder.h \ - /usr/include/qt5/QtCore/qtimeline.h \ - /usr/include/qt5/QtCore/qtimezone.h \ - /usr/include/qt5/QtCore/qxmlstream.h \ - /usr/include/qt5/QtCore/qtcoreversion.h \ - /usr/include/qt5/QtGui/QtGui \ - /usr/include/qt5/QtGui/QtGuiDepends \ - /usr/include/qt5/QtGui/qaccessiblebridge.h \ - /usr/include/qt5/QtGui/qaccessibleobject.h \ - /usr/include/qt5/QtGui/qaccessibleplugin.h \ - /usr/include/qt5/QtGui/qbitmap.h \ - /usr/include/qt5/QtGui/qiconengine.h \ - /usr/include/qt5/QtGui/qiconengineplugin.h \ - /usr/include/qt5/QtGui/qimageiohandler.h \ - /usr/include/qt5/QtGui/qimagereader.h \ - /usr/include/qt5/QtGui/qimagewriter.h \ - /usr/include/qt5/QtGui/qmovie.h \ - /usr/include/qt5/QtGui/qpicture.h \ - /usr/include/qt5/QtGui/qpictureformatplugin.h \ - /usr/include/qt5/QtGui/qpixmapcache.h \ - /usr/include/qt5/QtGui/qstandarditemmodel.h \ - /usr/include/qt5/QtGui/qclipboard.h \ - /usr/include/qt5/QtGui/qdrag.h \ - /usr/include/qt5/QtGui/qgenericplugin.h \ - /usr/include/qt5/QtGui/qgenericpluginfactory.h \ - /usr/include/qt5/QtGui/qguiapplication.h \ - /usr/include/qt5/QtGui/qinputmethod.h \ - /usr/include/qt5/QtGui/qoffscreensurface.h \ - /usr/include/qt5/QtGui/qopenglcontext.h \ - /usr/include/qt5/QtGui/QSurfaceFormat \ - /usr/include/qt5/QtGui/qopengl.h \ - /usr/include/qt5/QtCore/qt_windows.h \ - /usr/include/qt5/QtGui/qopengles2ext.h \ - /usr/include/qt5/QtGui/qopenglext.h \ - /usr/include/qt5/QtGui/qopenglversionfunctions.h \ - /usr/include/qt5/QtGui/qscreen.h \ - /usr/include/qt5/QtCore/QSize \ - /usr/include/qt5/QtCore/QSizeF \ - /usr/include/qt5/QtGui/QTransform \ - /usr/include/qt5/QtGui/qsessionmanager.h \ - /usr/include/qt5/QtGui/qstylehints.h \ - /usr/include/qt5/QtGui/qgenericmatrix.h \ - /usr/include/qt5/QtGui/qmatrix4x4.h \ - /usr/include/qt5/QtGui/qvector3d.h \ - /usr/include/qt5/QtGui/qvector4d.h \ - /usr/include/qt5/QtGui/qquaternion.h \ - /usr/include/qt5/QtGui/qopenglbuffer.h \ - /usr/include/qt5/QtGui/qopengldebug.h \ - /usr/include/qt5/QtGui/qopenglframebufferobject.h \ - /usr/include/qt5/QtGui/qopenglfunctions.h \ - /usr/include/qt5/QtGui/qopenglpaintdevice.h \ - /usr/include/qt5/QtGui/qopenglpixeltransferoptions.h \ - /usr/include/qt5/QtCore/QSharedDataPointer \ - /usr/include/qt5/QtGui/qopenglshaderprogram.h \ - /usr/include/qt5/QtGui/qopengltexture.h \ - /usr/include/qt5/QtGui/qopengltimerquery.h \ - /usr/include/qt5/QtGui/qopenglvertexarrayobject.h \ - /usr/include/qt5/QtGui/qbackingstore.h \ - /usr/include/qt5/QtGui/qpagedpaintdevice.h \ - /usr/include/qt5/QtGui/qpaintengine.h \ - /usr/include/qt5/QtGui/qpainter.h \ - /usr/include/qt5/QtGui/qtextoption.h \ - /usr/include/qt5/QtGui/qpen.h \ - /usr/include/qt5/QtGui/qpdfwriter.h \ - /usr/include/qt5/QtGui/qabstracttextdocumentlayout.h \ - /usr/include/qt5/QtGui/qtextlayout.h \ - /usr/include/qt5/QtGui/qtextformat.h \ - /usr/include/qt5/QtGui/qglyphrun.h \ - /usr/include/qt5/QtGui/qrawfont.h \ - /usr/include/qt5/QtGui/qfontdatabase.h \ - /usr/include/qt5/QtGui/qtextcursor.h \ - /usr/include/qt5/QtGui/qtextdocument.h \ - /usr/include/qt5/QtGui/qstatictext.h \ - /usr/include/qt5/QtGui/qsyntaxhighlighter.h \ - /usr/include/qt5/QtGui/qtextobject.h \ - /usr/include/qt5/QtGui/qtextdocumentfragment.h \ - /usr/include/qt5/QtGui/qtextdocumentwriter.h \ - /usr/include/qt5/QtGui/qtextlist.h \ - /usr/include/qt5/QtGui/qtexttable.h \ - /usr/include/qt5/QtGui/qdesktopservices.h \ - /usr/include/qt5/QtGui/qvalidator.h \ - /usr/include/qt5/QtGui/qtguiversion.h \ - /usr/include/qt5/QtQml/QtQml \ - /usr/include/qt5/QtQml/QtQmlDepends \ - /usr/include/qt5/QtNetwork/QtNetwork \ - /usr/include/qt5/QtNetwork/QtNetworkDepends \ - /usr/include/qt5/QtNetwork/qabstractnetworkcache.h \ - /usr/include/qt5/QtNetwork/qnetworkrequest.h \ - /usr/include/qt5/QtCore/QString \ - /usr/include/qt5/QtCore/QUrl \ - /usr/include/qt5/QtCore/QVariant \ - /usr/include/qt5/QtNetwork/qhttpmultipart.h \ - /usr/include/qt5/QtCore/QByteArray \ - /usr/include/qt5/QtCore/QIODevice \ - /usr/include/qt5/QtNetwork/QNetworkRequest \ - /usr/include/qt5/QtNetwork/qnetworkaccessmanager.h \ - /usr/include/qt5/QtNetwork/QSslConfiguration \ - /usr/include/qt5/QtNetwork/qsslconfiguration.h \ - /usr/include/qt5/QtNetwork/qsslsocket.h \ - /usr/include/qt5/QtNetwork/qtcpsocket.h \ - /usr/include/qt5/QtNetwork/qabstractsocket.h \ - /usr/include/qt5/QtNetwork/qsslerror.h \ - /usr/include/qt5/QtNetwork/qsslcertificate.h \ - /usr/include/qt5/QtNetwork/qssl.h \ - /usr/include/qt5/QtCore/QFlags \ - /usr/include/qt5/QtNetwork/qnetworkcookie.h \ - /usr/include/qt5/QtCore/QMetaType \ - /usr/include/qt5/QtNetwork/qnetworkcookiejar.h \ - /usr/include/qt5/QtNetwork/qnetworkdiskcache.h \ - /usr/include/qt5/QtNetwork/qnetworkreply.h \ - /usr/include/qt5/QtNetwork/QNetworkAccessManager \ - /usr/include/qt5/QtNetwork/qnetworkconfigmanager.h \ - /usr/include/qt5/QtNetwork/qnetworkconfiguration.h \ - /usr/include/qt5/QtNetwork/qnetworksession.h \ - /usr/include/qt5/QtNetwork/qnetworkinterface.h \ - /usr/include/qt5/QtNetwork/qhostaddress.h \ - /usr/include/qt5/QtNetwork/qauthenticator.h \ - /usr/include/qt5/QtNetwork/qdnslookup.h \ - /usr/include/qt5/QtNetwork/qhostinfo.h \ - /usr/include/qt5/QtNetwork/qnetworkproxy.h \ - /usr/include/qt5/QtNetwork/qlocalserver.h \ - /usr/include/qt5/QtNetwork/qlocalsocket.h \ - /usr/include/qt5/QtNetwork/qtcpserver.h \ - /usr/include/qt5/QtNetwork/qudpsocket.h \ - /usr/include/qt5/QtNetwork/qsslcertificateextension.h \ - /usr/include/qt5/QtNetwork/qsslcipher.h \ - /usr/include/qt5/QtNetwork/qsslkey.h \ - /usr/include/qt5/QtNetwork/qtnetworkversion.h \ - /usr/include/qt5/QtQml/qqmldebug.h \ - /usr/include/qt5/QtQml/qjsengine.h \ - /usr/include/qt5/QtQml/qjsvalueiterator.h \ - /usr/include/qt5/QtQml/qqmlabstracturlinterceptor.h \ - /usr/include/qt5/QtQml/qqmlapplicationengine.h \ - /usr/include/qt5/QtQml/qqmlengine.h \ - /usr/include/qt5/QtQml/qqmlcontext.h \ - /usr/include/qt5/QtQml/qqmlexpression.h \ - /usr/include/qt5/QtQml/qqmlscriptstring.h \ - /usr/include/qt5/QtQml/qqmlextensioninterface.h \ - /usr/include/qt5/QtQml/qqmlextensionplugin.h \ - /usr/include/qt5/QtQml/qqmlfile.h \ - /usr/include/qt5/QtQml/qqmlfileselector.h \ - /usr/include/qt5/QtQml/QQmlEngine \ - /usr/include/qt5/QtQml/qqmlincubator.h \ - /usr/include/qt5/QtQml/qqmlinfo.h \ - /usr/include/qt5/QtQml/qqmlnetworkaccessmanagerfactory.h \ - /usr/include/qt5/QtQml/qqmlproperty.h \ - /usr/include/qt5/QtQml/qqmlpropertymap.h \ - /usr/include/qt5/QtQml/qtqmlversion.h \ - /usr/include/qt5/QtQuick/designersupport.h \ - /usr/include/qt5/QtCore/QtGlobal \ - /usr/include/qt5/QtCore/QRectF \ - /usr/include/qt5/QtQuick/qquickframebufferobject.h \ - /usr/include/qt5/QtQuick/qquicktextdocument.h \ - /usr/include/qt5/QtGui/QTextDocument \ - /usr/include/qt5/QtQuick/qquickview.h \ - /usr/include/qt5/QtQuick/qquickwindow.h \ - /usr/include/qt5/QtQuick/qquickimageprovider.h \ - /usr/include/qt5/QtQuick/qsggeometry.h \ - /usr/include/qt5/QtQuick/qsgmaterial.h \ - /usr/include/qt5/QtQuick/qsgnode.h \ - /usr/include/qt5/QtGui/QMatrix4x4 \ - /usr/include/qt5/QtQuick/qsgflatcolormaterial.h \ - /usr/include/qt5/QtQuick/qsgsimplematerial.h \ - /usr/include/qt5/QtQuick/qsgsimplerectnode.h \ - /usr/include/qt5/QtQuick/qsgsimpletexturenode.h \ - /usr/include/qt5/QtQuick/qsgtexturematerial.h \ - /usr/include/qt5/QtQuick/qsgtexture.h \ - /usr/include/qt5/QtGui/QImage \ - /usr/include/qt5/QtQuick/qsgtextureprovider.h \ - /usr/include/qt5/QtQuick/qsgvertexcolormaterial.h \ - /usr/include/qt5/QtQuick/qtquickversion.h \ - /usr/include/qt5/QtGui/QGuiApplication \ - /usr/include/qt5/QtGui/QStyleHints \ - /usr/include/qt5/QtGui/QInputMethod \ - /usr/include/qt5/QtGui/QPainter \ - /usr/include/qt5/QtGui/QPixmap \ - /usr/include/qt5/QtGui/QClipboard \ - /usr/include/qt5/QtGui/QKeyEvent \ - /usr/include/qt5/QtCore/QTime \ - /usr/include/qt5/QtCore/QFile \ - /usr/include/qt5/QtCore/QtDebug \ - src/konsole_wcwidth.h \ - src/ScreenWindow.h \ - /usr/include/qt5/QtCore/QPoint \ - src/ColorScheme.h \ - /usr/include/qt5/QtCore/QSet \ - /usr/include/qt5/QtCore/QSettings \ - src/ColorTables.h \ - src/TerminalCharacterDecoder.h \ - src/LineFont.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/TerminalDisplay.o src/TerminalDisplay.cpp - -.obj/ksession.o: src/ksession.cpp src/ksession.h \ - /usr/include/qt5/QtCore/QObject \ - /usr/include/qt5/QtCore/qobject.h \ - /usr/include/qt5/QtCore/qobjectdefs.h \ - /usr/include/qt5/QtCore/qnamespace.h \ - /usr/include/qt5/QtCore/qglobal.h \ - /usr/include/qt5/QtCore/qconfig.h \ - /usr/include/qt5/QtCore/qfeatures.h \ - /usr/include/qt5/QtCore/qsystemdetection.h \ - /usr/include/qt5/QtCore/qprocessordetection.h \ - /usr/include/qt5/QtCore/qcompilerdetection.h \ - /usr/include/qt5/QtCore/qglobalstatic.h \ - /usr/include/qt5/QtCore/qatomic.h \ - /usr/include/qt5/QtCore/qbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_bootstrap.h \ - /usr/include/qt5/QtCore/qgenericatomic.h \ - /usr/include/qt5/QtCore/qatomic_msvc.h \ - /usr/include/qt5/QtCore/qatomic_integrity.h \ - /usr/include/qt5/QtCore/qoldbasicatomic.h \ - /usr/include/qt5/QtCore/qatomic_vxworks.h \ - /usr/include/qt5/QtCore/qatomic_power.h \ - /usr/include/qt5/QtCore/qatomic_alpha.h \ - /usr/include/qt5/QtCore/qatomic_armv7.h \ - /usr/include/qt5/QtCore/qatomic_armv6.h \ - /usr/include/qt5/QtCore/qatomic_armv5.h \ - /usr/include/qt5/QtCore/qatomic_bfin.h \ - /usr/include/qt5/QtCore/qatomic_ia64.h \ - /usr/include/qt5/QtCore/qatomic_mips.h \ - /usr/include/qt5/QtCore/qatomic_s390.h \ - /usr/include/qt5/QtCore/qatomic_sh4a.h \ - /usr/include/qt5/QtCore/qatomic_sparc.h \ - /usr/include/qt5/QtCore/qatomic_gcc.h \ - /usr/include/qt5/QtCore/qatomic_x86.h \ - /usr/include/qt5/QtCore/qatomic_cxx11.h \ - /usr/include/qt5/QtCore/qatomic_unix.h \ - /usr/include/qt5/QtCore/qmutex.h \ - /usr/include/qt5/QtCore/qlogging.h \ - /usr/include/qt5/QtCore/qflags.h \ - /usr/include/qt5/QtCore/qtypeinfo.h \ - /usr/include/qt5/QtCore/qtypetraits.h \ - /usr/include/qt5/QtCore/qsysinfo.h \ - /usr/include/qt5/QtCore/qobjectdefs_impl.h \ - /usr/include/qt5/QtCore/qstring.h \ - /usr/include/qt5/QtCore/qchar.h \ - /usr/include/qt5/QtCore/qbytearray.h \ - /usr/include/qt5/QtCore/qrefcount.h \ - /usr/include/qt5/QtCore/qarraydata.h \ - /usr/include/qt5/QtCore/qstringbuilder.h \ - /usr/include/qt5/QtCore/qlist.h \ - /usr/include/qt5/QtCore/qalgorithms.h \ - /usr/include/qt5/QtCore/qiterator.h \ - /usr/include/qt5/QtCore/qcoreevent.h \ - /usr/include/qt5/QtCore/qscopedpointer.h \ - /usr/include/qt5/QtCore/qmetatype.h \ - /usr/include/qt5/QtCore/qvarlengtharray.h \ - /usr/include/qt5/QtCore/qcontainerfwd.h \ - /usr/include/qt5/QtCore/qisenum.h \ - /usr/include/qt5/QtCore/qobject_impl.h \ - src/Session.h \ - /usr/include/qt5/QtCore/QStringList \ - /usr/include/qt5/QtCore/qstringlist.h \ - /usr/include/qt5/QtCore/qdatastream.h \ - /usr/include/qt5/QtCore/qiodevice.h \ - /usr/include/qt5/QtCore/qpair.h \ - /usr/include/qt5/QtCore/qregexp.h \ - /usr/include/qt5/QtCore/qstringmatcher.h \ - /usr/include/qt5/QtCore/QTimer \ - /usr/include/qt5/QtCore/qtimer.h \ - /usr/include/qt5/QtCore/qbasictimer.h \ - /usr/include/qt5/QtGui/QWindow \ - /usr/include/qt5/QtGui/qwindow.h \ - /usr/include/qt5/QtCore/QEvent \ - /usr/include/qt5/QtCore/QMargins \ - /usr/include/qt5/QtCore/qmargins.h \ - /usr/include/qt5/QtCore/qrect.h \ - /usr/include/qt5/QtCore/qsize.h \ - /usr/include/qt5/QtCore/qpoint.h \ - /usr/include/qt5/QtCore/QRect \ - /usr/include/qt5/QtGui/qsurface.h \ - /usr/include/qt5/QtGui/qsurfaceformat.h \ - /usr/include/qt5/QtGui/qwindowdefs.h \ - /usr/include/qt5/QtGui/qwindowdefs_win.h \ - /usr/include/qt5/QtGui/qicon.h \ - /usr/include/qt5/QtGui/qpixmap.h \ - /usr/include/qt5/QtGui/qpaintdevice.h \ - /usr/include/qt5/QtGui/qcolor.h \ - /usr/include/qt5/QtGui/qrgb.h \ - /usr/include/qt5/QtCore/qsharedpointer.h \ - /usr/include/qt5/QtCore/qshareddata.h \ - /usr/include/qt5/QtCore/qsharedpointer_impl.h \ - /usr/include/qt5/QtCore/qhash.h \ - /usr/include/qt5/QtGui/qimage.h \ - /usr/include/qt5/QtGui/qtransform.h \ - /usr/include/qt5/QtGui/qmatrix.h \ - /usr/include/qt5/QtGui/qpolygon.h \ - /usr/include/qt5/QtCore/qvector.h \ - /usr/include/qt5/QtGui/qregion.h \ - /usr/include/qt5/QtCore/qline.h \ - /usr/include/qt5/QtGui/qpainterpath.h \ - /usr/include/qt5/QtGui/qcursor.h \ - src/History.h \ - /usr/include/qt5/QtCore/QBitRef \ - /usr/include/qt5/QtCore/qbitarray.h \ - /usr/include/qt5/QtCore/QHash \ - /usr/include/qt5/QtCore/QVector \ - /usr/include/qt5/QtCore/QTemporaryFile \ - /usr/include/qt5/QtCore/qtemporaryfile.h \ - /usr/include/qt5/QtCore/qfile.h \ - /usr/include/qt5/QtCore/qfiledevice.h \ - src/BlockArray.h \ - src/Character.h \ - src/CharacterColor.h \ - /usr/include/qt5/QtGui/QColor \ - /usr/include/qt5/QtCore/QTextCodec \ - /usr/include/qt5/QtCore/qtextcodec.h \ - src/KeyboardTranslator.h \ - /usr/include/qt5/QtCore/QList \ - /usr/include/qt5/QtGui/QKeySequence \ - /usr/include/qt5/QtGui/qkeysequence.h \ - /usr/include/qt5/QtCore/QMetaType \ - /usr/include/qt5/QtCore/QVarLengthArray \ - src/TerminalDisplay.h \ - /usr/include/qt5/QtCore/QPointer \ - /usr/include/qt5/QtCore/qpointer.h \ - src/Filter.h \ - /usr/include/qt5/QtWidgets/QAction \ - /usr/include/qt5/QtWidgets/qaction.h \ - /usr/include/qt5/QtWidgets/qwidget.h \ - /usr/include/qt5/QtGui/qpalette.h \ - /usr/include/qt5/QtGui/qbrush.h \ - /usr/include/qt5/QtGui/qfont.h \ - /usr/include/qt5/QtGui/qfontmetrics.h \ - /usr/include/qt5/QtGui/qfontinfo.h \ - /usr/include/qt5/QtWidgets/qsizepolicy.h \ - /usr/include/qt5/QtGui/qevent.h \ - /usr/include/qt5/QtCore/qvariant.h \ - /usr/include/qt5/QtCore/qmap.h \ - /usr/include/qt5/QtCore/qdebug.h \ - /usr/include/qt5/QtCore/qtextstream.h \ - /usr/include/qt5/QtCore/qlocale.h \ - /usr/include/qt5/QtCore/qset.h \ - /usr/include/qt5/QtCore/qcontiguouscache.h \ - /usr/include/qt5/QtCore/qurl.h \ - /usr/include/qt5/QtCore/qurlquery.h \ - /usr/include/qt5/QtGui/qvector2d.h \ - /usr/include/qt5/QtGui/qtouchdevice.h \ - /usr/include/qt5/QtWidgets/qactiongroup.h \ - /usr/include/qt5/QtCore/QRegExp \ - /usr/include/qt5/QtQuick/QQuickItem \ - /usr/include/qt5/QtQuick/qquickitem.h \ - /usr/include/qt5/QtQuick/qtquickglobal.h \ - /usr/include/qt5/QtQml/qqml.h \ - /usr/include/qt5/QtQml/qqmlprivate.h \ - /usr/include/qt5/QtQml/qtqmlglobal.h \ - /usr/include/qt5/QtQml/qqmlparserstatus.h \ - /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \ - /usr/include/qt5/QtQml/qqmllist.h \ - /usr/include/qt5/QtCore/qmetaobject.h \ - /usr/include/qt5/QtQml/qqmlcomponent.h \ - /usr/include/qt5/QtQml/qqmlerror.h \ - /usr/include/qt5/QtQml/qjsvalue.h \ - /usr/include/qt5/QtGui/qaccessible.h \ - /usr/include/qt5/QtCore/qcoreapplication.h \ - /usr/include/qt5/QtCore/qeventloop.h \ - /usr/include/qt5/QtQuick/QQuickPaintedItem \ - /usr/include/qt5/QtQuick/qquickpainteditem.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ksession.o src/ksession.cpp - -.obj/moc_plugin.o: .moc/moc_plugin.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_plugin.o .moc/moc_plugin.cpp - -.obj/moc_Pty.o: .moc/moc_Pty.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Pty.o .moc/moc_Pty.cpp - -.obj/moc_kptyprocess.o: .moc/moc_kptyprocess.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kptyprocess.o .moc/moc_kptyprocess.cpp - -.obj/moc_kptydevice.o: .moc/moc_kptydevice.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kptydevice.o .moc/moc_kptydevice.cpp - -.obj/moc_kprocess.o: .moc/moc_kprocess.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kprocess.o .moc/moc_kprocess.cpp - -.obj/moc_Vt102Emulation.o: .moc/moc_Vt102Emulation.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Vt102Emulation.o .moc/moc_Vt102Emulation.cpp - -.obj/moc_Session.o: .moc/moc_Session.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Session.o .moc/moc_Session.cpp - -.obj/moc_Emulation.o: .moc/moc_Emulation.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Emulation.o .moc/moc_Emulation.cpp - -.obj/moc_ScreenWindow.o: .moc/moc_ScreenWindow.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_ScreenWindow.o .moc/moc_ScreenWindow.cpp - -.obj/moc_Filter.o: .moc/moc_Filter.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Filter.o .moc/moc_Filter.cpp - -.obj/moc_TerminalDisplay.o: .moc/moc_TerminalDisplay.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_TerminalDisplay.o .moc/moc_TerminalDisplay.cpp - -.obj/moc_ksession.o: .moc/moc_ksession.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_ksession.o .moc/moc_ksession.cpp - -####### Install - -install_target: first FORCE - @test -d $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole - -$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/imports/org/kde/konsole/$(TARGET)" - -$(STRIP) --strip-unneeded "$(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/imports/org/kde/konsole/$(TARGET)" - -uninstall_target: FORCE - -$(DEL_FILE) "$(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/imports/org/kde/konsole/$(TARGET)" - -$(DEL_DIR) $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - - -install_qmldir: first FORCE - @test -d $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole - -$(INSTALL_FILE) /home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/src/qmldir $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - -$(INSTALL_FILE) /home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/src/plugins.qmltypes $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - -uninstall_qmldir: FORCE - -$(DEL_FILE) -r $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/plugins.qmltypes - -$(DEL_FILE) -r $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/qmldir - -$(DEL_DIR) $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - - -install_assets: first FORCE - @test -d $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole - -$(INSTALL_DIR) /home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/assets/color-schemes $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - -$(INSTALL_DIR) /home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/assets/kb-layouts $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - -uninstall_assets: FORCE - -$(DEL_FILE) -r $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/kb-layouts - -$(DEL_FILE) -r $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/color-schemes - -$(DEL_DIR) $(INSTALL_ROOT)/home/swordfish/workspaces/qt5/cool-old-term/konsole-qml-plugin/../imports/org/kde/konsole/ - - -install: install_target install_qmldir install_assets FORCE - -uninstall: uninstall_target uninstall_qmldir uninstall_assets FORCE - -FORCE: - -- 2.47.2 From 14ef4e261398e997008ac3afed1247b45b9e2173 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 12 Aug 2014 22:45:22 +0200 Subject: [PATCH 045/477] Fix 84 : changed script shell to /bin/sh. --- cool-old-term | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cool-old-term b/cool-old-term index d06a4bc..9659e7e 100755 --- a/cool-old-term +++ b/cool-old-term @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh #This is a workaround for an ubuntu specific problem with appmenu-qt5. QT_QPA_PLATFORMTHEME= qmlscene -I $(dirname $0)/imports $(dirname $0)/app/main.qml -- 2.47.2 From 0bc4e061d081d6a127d5e3450ff30c10debb56f1 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Wed, 13 Aug 2014 03:43:01 +0200 Subject: [PATCH 046/477] Update README.md Point to binary packages (and fix a small typo by the way) --- README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1ad6153..3941929 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ cool-old-term is a terminal emulator which tries to mimic the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. -It now uses the konsole engine which is powerful and mature. +It now uses the Konsole engine which is powerful and mature. This terminal emulator requires Qt 5.2 or higher to run. @@ -13,6 +13,15 @@ This terminal emulator requires Qt 5.2 or higher to run. ![Image]() ![Image]() +## Get cool-old-term +You can either build cool-old-term yourself (see below) or use walk the easy way and install one of these packages: + +Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-old-term). + +Arch users can install this [package](https://aur.archlinux.org/packages/cool-old-term-git/) directly via the [AUR](https://aur.archlinux.org): + + yaourt -S aur/cool-old-term-git + ##Build instructions ##Dependencies @@ -47,10 +56,6 @@ sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarat sudo pacman -S qt5-base qt5-declarative qt5-quickcontrols qt5-graphicaleffects -You can also install this [package](https://aur.archlinux.org/packages/cool-old-term-git/) directly via the [AUR](https://aur.archlinux.org): - - yaourt -S aur/cool-old-term-git - --- **openSUSE** -- 2.47.2 From 9e47a366deeb6efa520fa0f7c55301f2a935262c Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Wed, 13 Aug 2014 03:50:05 +0200 Subject: [PATCH 047/477] Update cool-old-term.spec Fix "Group", change URL to Github project where cool-old-term actually resides. --- packaging/rpm/cool-old-term.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/rpm/cool-old-term.spec b/packaging/rpm/cool-old-term.spec index 1f6f8b7..6d66575 100644 --- a/packaging/rpm/cool-old-term.spec +++ b/packaging/rpm/cool-old-term.spec @@ -24,9 +24,9 @@ Name: cool-old-term Summary: Cool Old Terminal Version: 0.9 Release: 0%{?dist} -Group: System/GUI/Other +Group: System/X11/Terminals License: GPLv3 -URL: http://swordfishslabs.wordpress.com/ +URL: https://github.com/Swordifish90/cool-old-term # For this spec file to work, the cool-old-term sources must be located in a directory # named cool-old-term-0.9 (with "0.9" being the version number defined above). -- 2.47.2 From d51e0cc32ed36f11bbc4195ffcc149e5a4a61fb0 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Thu, 14 Aug 2014 07:57:41 +0200 Subject: [PATCH 048/477] Update README.md Rm word that I left by accident --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3941929..ad296d6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This terminal emulator requires Qt 5.2 or higher to run. ![Image]() ## Get cool-old-term -You can either build cool-old-term yourself (see below) or use walk the easy way and install one of these packages: +You can either build cool-old-term yourself (see below) or walk the easy way and install one of these packages: Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-old-term). -- 2.47.2 From d3e1d9d158ffad53bc770ec5ddf79e65176b7137 Mon Sep 17 00:00:00 2001 From: Yuri Khan Date: Wed, 20 Aug 2014 17:48:04 +0700 Subject: [PATCH 049/477] Add a few more key names necessary for xterm keymap --- konsole-qml-plugin/src/KeyboardTranslator.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/konsole-qml-plugin/src/KeyboardTranslator.cpp b/konsole-qml-plugin/src/KeyboardTranslator.cpp index e87631d..9ecc038 100644 --- a/konsole-qml-plugin/src/KeyboardTranslator.cpp +++ b/konsole-qml-plugin/src/KeyboardTranslator.cpp @@ -453,12 +453,18 @@ bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode keyCode = Qt::Key_PageUp; else if ( item == "next" ) keyCode = Qt::Key_PageDown; + else if ( item == "question" ) + keyCode = Qt::Key_Question; + else if ( item == "at" ) + keyCode = Qt::Key_At; else if ( item == "bracketleft" ) keyCode = Qt::Key_BracketLeft; else if ( item == "backslash" ) keyCode = Qt::Key_Backslash; else if ( item == "bracketright" ) keyCode = Qt::Key_BracketRight; + else if ( item == "asciicircum" ) + keyCode = Qt::Key_AsciiCircum; else return false; -- 2.47.2 From ad8818f81154229987f3ff10d603c78d976ff7f6 Mon Sep 17 00:00:00 2001 From: Yuri Khan Date: Wed, 20 Aug 2014 17:48:43 +0700 Subject: [PATCH 050/477] Add xterm keytab --- .../assets/kb-layouts/xterm.keytab | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 konsole-qml-plugin/assets/kb-layouts/xterm.keytab diff --git a/konsole-qml-plugin/assets/kb-layouts/xterm.keytab b/konsole-qml-plugin/assets/kb-layouts/xterm.keytab new file mode 100644 index 0000000..96d8764 --- /dev/null +++ b/konsole-qml-plugin/assets/kb-layouts/xterm.keytab @@ -0,0 +1,196 @@ +# [README.xterm.Keytab] Xterm Keyboard Table +# +# To customize your keyboard, copy this file to something +# ending with .keytab and change it to meet you needs. +# Please read the README.KeyTab and the README.keyboard +# in this case. +# +# -------------------------------------------------------------- + +keyboard "Xterm" + +# common keys + +key Escape : "\E" + +key Tab -Shift : "\t" +key Tab +Shift+Ansi : "\E[Z" +key Tab +Shift-Ansi : "\t" +key Backtab +Ansi : "\E[Z" +key Backtab -Ansi : "\t" + +key Return-Shift-NewLine : "\r" +key Return-Shift+NewLine : "\r\n" + +key Return+Shift : "\EOM" + +# Backspace and Delete codes are preserving CTRL-H. + +key Backspace : "\x7f" + +# Arrow keys in VT52 mode + +key Up -Shift-Ansi : "\EA" +key Down -Shift-Ansi : "\EB" +key Right-Shift-Ansi : "\EC" +key Left -Shift-Ansi : "\ED" + +# Arrow keys in ANSI mode with Application - and Normal Cursor Mode) + +key Up -Shift-AnyMod+Ansi+AppCuKeys : "\EOA" +key Down -Shift-AnyMod+Ansi+AppCuKeys : "\EOB" +key Right -Shift-AnyMod+Ansi+AppCuKeys : "\EOC" +key Left -Shift-AnyMod+Ansi+AppCuKeys : "\EOD" + +key Up -Shift-AnyMod+Ansi-AppCuKeys : "\E[A" +key Down -Shift-AnyMod+Ansi-AppCuKeys : "\E[B" +key Right -Shift-AnyMod+Ansi-AppCuKeys : "\E[C" +key Left -Shift-AnyMod+Ansi-AppCuKeys : "\E[D" + +key Up +AnyMod+Ansi : "\E[1;*A" +key Down +AnyMod+Ansi : "\E[1;*B" +key Right +AnyMod+Ansi : "\E[1;*C" +key Left +AnyMod+Ansi : "\E[1;*D" + +# Keypad keys with NumLock ON +# (see "Numeric Keypad" section at http://www.nw.com/nw/WWW/products/wizcon/vt100.html ) +# +# Not enabled for now because it breaks the keypad in Vim. +# +#key 0 +KeyPad+AppKeyPad : "\EOp" +#key 1 +KeyPad+AppKeyPad : "\EOq" +#key 2 +KeyPad+AppKeyPad : "\EOr" +#key 3 +KeyPad+AppKeyPad : "\EOs" +#key 4 +KeyPad+AppKeyPad : "\EOt" +#key 5 +KeyPad+AppKeyPad : "\EOu" +#key 6 +KeyPad+AppKeyPad : "\EOv" +#key 7 +KeyPad+AppKeyPad : "\EOw" +#key 8 +KeyPad+AppKeyPad : "\EOx" +#key 9 +KeyPad+AppKeyPad : "\EOy" +#key + +KeyPad+AppKeyPad : "\EOl" +#key - +KeyPad+AppKeyPad : "\EOm" +#key . +KeyPad+AppKeyPad : "\EOn" +#key * +KeyPad+AppKeyPad : "\EOM" +#key Enter +KeyPad+AppKeyPad : "\r" + +# Keypad keys with NumLock Off +key Up -Shift+Ansi+AppCuKeys+KeyPad : "\EOA" +key Down -Shift+Ansi+AppCuKeys+KeyPad : "\EOB" +key Right -Shift+Ansi+AppCuKeys+KeyPad : "\EOC" +key Left -Shift+Ansi+AppCuKeys+KeyPad : "\EOD" + +key Up -Shift+Ansi-AppCuKeys+KeyPad : "\E[A" +key Down -Shift+Ansi-AppCuKeys+KeyPad : "\E[B" +key Right -Shift+Ansi-AppCuKeys+KeyPad : "\E[C" +key Left -Shift+Ansi-AppCuKeys+KeyPad : "\E[D" + +key Home +AppCuKeys+KeyPad : "\EOH" +key End +AppCuKeys+KeyPad : "\EOF" +key Home -AppCuKeys+KeyPad : "\E[H" +key End -AppCuKeys+KeyPad : "\E[F" + +key Insert +KeyPad : "\E[2~" +key Delete +KeyPad : "\E[3~" +key Prior -Shift+KeyPad : "\E[5~" +key Next -Shift+KeyPad : "\E[6~" + +# other grey PC keys + +key Enter+NewLine : "\r\n" +key Enter-NewLine : "\r" + +key Home -AnyMod-AppCuKeys : "\E[H" +key End -AnyMod-AppCuKeys : "\E[F" +key Home -AnyMod+AppCuKeys : "\EOH" +key End -AnyMod+AppCuKeys : "\EOF" +key Home +AnyMod : "\E[1;*H" +key End +AnyMod : "\E[1;*F" + +key Insert -AnyMod : "\E[2~" +key Delete -AnyMod : "\E[3~" +key Insert +AnyMod : "\E[2;*~" +key Delete +AnyMod : "\E[3;*~" + +key Prior -Shift-AnyMod : "\E[5~" +key Next -Shift-AnyMod : "\E[6~" +key Prior -Shift+AnyMod : "\E[5;*~" +key Next -Shift+AnyMod : "\E[6;*~" + +# Function keys +key F1 -AnyMod : "\EOP" +key F2 -AnyMod : "\EOQ" +key F3 -AnyMod : "\EOR" +key F4 -AnyMod : "\EOS" +key F5 -AnyMod : "\E[15~" +key F6 -AnyMod : "\E[17~" +key F7 -AnyMod : "\E[18~" +key F8 -AnyMod : "\E[19~" +key F9 -AnyMod : "\E[20~" +key F10 -AnyMod : "\E[21~" +key F11 -AnyMod : "\E[23~" +key F12 -AnyMod : "\E[24~" + +key F1 +AnyMod : "\E[1;*P" +key F2 +AnyMod : "\E[1;*Q" +key F3 +AnyMod : "\E[1;*R" +key F4 +AnyMod : "\E[1;*S" +key F5 +AnyMod : "\E[15;*~" +key F6 +AnyMod : "\E[17;*~" +key F7 +AnyMod : "\E[18;*~" +key F8 +AnyMod : "\E[19;*~" +key F9 +AnyMod : "\E[20;*~" +key F10 +AnyMod : "\E[21;*~" +key F11 +AnyMod : "\E[23;*~" +key F12 +AnyMod : "\E[24;*~" + +# Work around dead keys + +key Space +Control : "\x00" + +key At +Control : "\x00" + +key A +Control : "\x01" +key B +Control : "\x02" +key C +Control : "\x03" +key D +Control : "\x04" +key E +Control : "\x05" +key F +Control : "\x06" +key G +Control : "\x07" +key H +Control : "\x08" +key I +Control : "\x09" +key J +Control : "\x0a" +key K +Control : "\x0b" +key L +Control : "\x0c" +key M +Control : "\x0d" +key N +Control : "\x0e" +key O +Control : "\x0f" +key P +Control : "\x10" +key Q +Control : "\x11" +key R +Control : "\x12" +key S +Control : "\x13" +key T +Control : "\x14" +key U +Control : "\x15" +key V +Control : "\x16" +key W +Control : "\x17" +key X +Control : "\x18" +key Y +Control : "\x19" +key Z +Control : "\x1a" + +key BracketLeft +Control : "\x1b" +key Backslash +Control : "\x1c" +key BracketRight +Control : "\x1d" +key AsciiCircum +Control : "\x1e" +key _ +Control : "\x1f" + +key Question +Control : "\x7f" + +# Some keys are used by konsole to cause operations. +# The scroll* operations refer to the history buffer. + +key Up +Shift-AppScreen : scrollLineUp +key Prior +Shift-AppScreen : scrollPageUp +key Down +Shift-AppScreen : scrollLineDown +key Next +Shift-AppScreen : scrollPageDown + +key ScrollLock : scrollLock + -- 2.47.2 From c305e32a475b812e1e76967b55c9e8da37856cdd Mon Sep 17 00:00:00 2001 From: Yuri Khan Date: Wed, 20 Aug 2014 17:48:50 +0700 Subject: [PATCH 051/477] Use xterm keytab --- app/PreprocessedTerminal.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index a96f7df..59a96b6 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -79,7 +79,7 @@ Item{ session: KSession { id: ksession - kbScheme: "linux" + kbScheme: "xterm" onFinished: { Qt.quit() -- 2.47.2 From 46edda6d18d9bf4a06a170ad69b2ac25d9902b9c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 22 Aug 2014 13:20:42 +0200 Subject: [PATCH 052/477] Fix: custom commands in keytab were ignored. Removed hardcoded key combinations. --- konsole-qml-plugin/src/Screen.cpp | 10 +++++ konsole-qml-plugin/src/Screen.h | 8 ++++ konsole-qml-plugin/src/TerminalDisplay.cpp | 47 +++++----------------- konsole-qml-plugin/src/TerminalDisplay.h | 6 ++- konsole-qml-plugin/src/Vt102Emulation.cpp | 9 +++++ konsole-qml-plugin/src/Vt102Emulation.h | 2 + 6 files changed, 44 insertions(+), 38 deletions(-) diff --git a/konsole-qml-plugin/src/Screen.cpp b/konsole-qml-plugin/src/Screen.cpp index 45ddd80..e855ae7 100644 --- a/konsole-qml-plugin/src/Screen.cpp +++ b/konsole-qml-plugin/src/Screen.cpp @@ -1358,3 +1358,13 @@ void Screen::fillWithDefaultChar(Character* dest, int count) for (int i=0;iscrollBy(mode, amount); + _screenWindow->setTrackOutput(_screenWindow->atEndOfOutput()); + updateLineProperties(); + updateImage(); +} + + void KTerminalDisplay::setUsesMouse(bool usesMouse){ _mouseMarks = !usesMouse; } @@ -2144,44 +2153,10 @@ void KTerminalDisplay::drawInputMethodPreeditString(QPainter *painter , const QR void KTerminalDisplay::keyPressEvent(QKeyEvent *event) { + _screenWindow->screen()->setCurrentTerminalDisplay(this); + bool emitKeyPressSignal = true; - // Keyboard-based navigation - if ( event->modifiers() == Qt::ShiftModifier ) - { - bool update = true; - - if ( event->key() == Qt::Key_PageUp ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , -1 ); - } - else if ( event->key() == Qt::Key_PageDown ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , 1 ); - } - else if ( event->key() == Qt::Key_Up ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , -1 ); - } - else if ( event->key() == Qt::Key_Down ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , 1 ); - } - else - update = false; - - if ( update ) - { - _screenWindow->setTrackOutput( _screenWindow->atEndOfOutput() ); - - updateLineProperties(); - updateImage(); - - // do not send key press to terminal - emitKeyPressSignal = false; - } - } - _actSel=0; // Key stroke implies a screen update, so TerminalDisplay won't // know where the current selection is. diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index 831d7a5..693fb85 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -33,6 +33,8 @@ #include "Filter.h" #include "Character.h" #include "ksession.h" +#include "ScreenWindow.h" +#include "Screen.h" //#include "konsole_export.h" #define KONSOLEPRIVATE_EXPORT @@ -47,8 +49,6 @@ class QTimerEvent; extern unsigned short vt100_graphics[32]; -class ScreenWindow; - /** * A widget which displays output from a terminal emulation and sends input keypresses and mouse activity * to the terminal. @@ -317,6 +317,8 @@ public slots: void mouseDoubleClick(qreal x, qreal y); void mouseRelease(qreal x, qreal y); + void scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount); + void setUsesMouse(bool usesMouse); bool autoFocus() { return m_focusOnClick; } diff --git a/konsole-qml-plugin/src/Vt102Emulation.cpp b/konsole-qml-plugin/src/Vt102Emulation.cpp index f33010f..f38787a 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.cpp +++ b/konsole-qml-plugin/src/Vt102Emulation.cpp @@ -940,8 +940,17 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) if ( entry.command() != KeyboardTranslator::NoCommand ) { + KTerminalDisplay* currentView = _currentScreen->currentTerminalDisplay(); if (entry.command() & KeyboardTranslator::EraseCommand) textToSend += eraseChar(); + else if (entry.command() & KeyboardTranslator::ScrollPageUpCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollPages, -1); + else if (entry.command() & KeyboardTranslator::ScrollPageDownCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollPages, 1); + else if (entry.command() & KeyboardTranslator::ScrollLineUpCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollLines, -1); + else if (entry.command() & KeyboardTranslator::ScrollLineDownCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollLines, 1); // TODO command handling } diff --git a/konsole-qml-plugin/src/Vt102Emulation.h b/konsole-qml-plugin/src/Vt102Emulation.h index 63e23c3..9dc6f6e 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.h +++ b/konsole-qml-plugin/src/Vt102Emulation.h @@ -34,6 +34,8 @@ // Konsole #include "Emulation.h" #include "Screen.h" +#include "ScreenWindow.h" +#include "TerminalDisplay.h" #define MODE_AppScreen (MODES_SCREEN+0) // Mode #1 #define MODE_AppCuKeys (MODES_SCREEN+1) // Application cursor keys (DECCKM) -- 2.47.2 From 765c41307fd81792b435a8b6ae92b24bddb519c1 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 18:36:08 +0200 Subject: [PATCH 053/477] Reimplementing mouse events. --- app/PreprocessedTerminal.qml | 51 +- konsole-qml-plugin/src/TerminalDisplay.cpp | 553 +++++++++++++++++++-- konsole-qml-plugin/src/TerminalDisplay.h | 19 +- 3 files changed, 546 insertions(+), 77 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 59a96b6..8e27c17 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -137,37 +137,36 @@ Item{ var lines = wheel.angleDelta.y > 0 ? -2 : 2; kterminal.scrollWheel(coord.width, coord.height, lines); } - onClicked: { - if (mouse.button == Qt.RightButton){ - contextmenu.popup(); - } else if (mouse.button == Qt.MiddleButton){ - kterminal.pasteSelection(); - } - } + //onClicked: { + // if (mouse.button == Qt.RightButton){ + // contextmenu.popup(); + // } else if (mouse.button == Qt.MiddleButton){ + // kterminal.pasteSelection(); + // } + //} onDoubleClicked: { - if (mouse.button == Qt.LeftButton){ - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mouseDoubleClick(coord.width, coord.height); - } - } - onPositionChanged: { - if (pressedButtons & Qt.LeftButton){ - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mouseMove(coord.width, coord.height); - } + var coord = correctDistortion(mouse.x, mouse.y); + console.log("Double click"); + kterminal.mouseDoubleClickEvent(coord, mouse.button, mouse.modifiers); } + //onPositionChanged: { + // if (pressedButtons & Qt.LeftButton){ + // var coord = correctDistortion(mouse.x, mouse.y); + // kterminal.mouseMove(coord.width, coord.height); + // } + //} onPressed: { - if (mouse.button == Qt.LeftButton){ - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mousePress(coord.width, coord.height); - } + var coord = correctDistortion(mouse.x, mouse.y); + kterminal.mousePressEvent(coord, mouse.button, mouse.modifiers) } onReleased: { - if (mouse.button == Qt.LeftButton){ - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mouseRelease(coord.width, coord.height); - } + var coord = correctDistortion(mouse.x, mouse.y); + kterminal.mouseReleaseEvent(coord, mouse.button, mouse.modifiers); } + onPositionChanged: { + var coord = correctDistortion(mouse.x, mouse.y); + kterminal.mouseMoveEvent(coord, mouse.button, mouse.buttons, mouse.modifiers); + } //Frame displacement properties property real dtop: frame.item.displacementTop @@ -185,7 +184,7 @@ Item{ var cc = Qt.size(0.5 - x, 0.5 - y); var distortion = (cc.height * cc.height + cc.width * cc.width) * shadersettings.screen_distortion; - return Qt.size((x - cc.width * (1+distortion) * distortion) * width, + return Qt.point((x - cc.width * (1+distortion) * distortion) * width, (y - cc.height * (1+distortion) * distortion) * height) } } diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 642a1f8..1c36399 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -472,67 +472,513 @@ void KTerminalDisplay::scrollWheel(qreal x, qreal y, int lines){ } } -void KTerminalDisplay::mousePress(qreal x, qreal y){ - if (m_focusOnClick) forcedFocus(); - if (m_showVKBonClick) ShowVKB(true); +void KTerminalDisplay::doPaste(QString text, bool appendReturn) +{ + if (!_screenWindow) + return; + + if (appendReturn) + text.append("\r"); + +// if (text.length() > 8000) { +// if (KMessageBox::warningContinueCancel(window(), +// i18np("Are you sure you want to paste %1 character?", +// "Are you sure you want to paste %1 characters?", +// text.length()), +// i18n("Confirm Paste"), +// KStandardGuiItem::cont(), +// KStandardGuiItem::cancel(), +// "ShowPasteHugeTextWarning") == KMessageBox::Cancel) +// return; +// } + + if (!text.isEmpty()) { + text.replace('\n', '\r'); +// if (bracketedPasteMode()) { +// text.prepend("\e[200~"); +// text.append("\e[201~"); +// } + // perform paste by simulating keypress events + QKeyEvent e(QEvent::KeyPress, 0, Qt::NoModifier, text); + emit keyPressedSignal(&e); + } +} + + +void KTerminalDisplay::pasteFromClipboard(bool appendEnter) +{ + QString text = QGuiApplication::clipboard()->text(QClipboard::Clipboard); + doPaste(text, appendEnter); +} + +void KTerminalDisplay::pasteFromX11Selection(bool appendEnter) +{ + QString text = QGuiApplication::clipboard()->text(QClipboard::Selection); + doPaste(text, appendEnter); +} + + +void KTerminalDisplay::processMidButtonClick(QPoint &position, Qt::KeyboardModifier modifiers) +{ + if (_mouseMarks || (modifiers & Qt::ShiftModifier)) { + const bool appendEnter = modifiers & Qt::ControlModifier; + + if (true /*_middleClickPasteMode == Enum::PasteFromX11Selection*/) { + pasteFromX11Selection(appendEnter); + } else if (false /*_middleClickPasteMode == Enum::PasteFromClipboard*/) { + pasteFromClipboard(appendEnter); + } else { + Q_ASSERT(false); + } + } else { + int charLine = 0; + int charColumn = 0; + getCharacterPosition(position, charLine, charColumn); + + emit mouseSignal(1, charColumn + 1, charLine + 1, 0); + //emit mouseSignal(1, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); + } +} + + +void KTerminalDisplay::mousePressEvent(QPoint position, int but, int mod) +{ + Qt::MouseButton button = (Qt::MouseButton) but; + Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; +// if (_possibleTripleClick && (ev->button() == Qt::LeftButton)) { +// mouseTripleClickEvent(ev); +// return; +// } + + //if (!contentsRect().contains(ev->pos())) return; + + if (!_screenWindow) return; int charLine; int charColumn; - getCharacterPosition(QPoint(x,y), charLine, charColumn); + getCharacterPosition(position, charLine, charColumn); + QPoint pos = QPoint(charColumn, charLine); - _wordSelectionMode = false; - _lineSelectionMode = false; + if (button == Qt::LeftButton) { + // request the software keyboard, if any +// if (qApp->autoSipEnabled()) { +// QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel( +// style()->styleHint(QStyle::SH_RequestSoftwareInputPanel)); +// if (hasFocus() || behavior == QStyle::RSIP_OnMouseClick) { +// QEvent event(QEvent::RequestSoftwareInputPanel); +// QApplication::sendEvent(this, &event); +// } +// } - if(_mouseMarks){ - emit mouseSignal(0, charColumn + 1, charLine + 1, 0); - } else { - QPoint pos = QPoint(charColumn, charLine); + _lineSelectionMode = false; + _wordSelectionMode = false; - _screenWindow->clearSelection(); - _iPntSel = _pntSel = pos; - _actSel = 1; // left mouse button pressed but nothing selected yet. + // The user clicked inside selected text + //bool selected = _screenWindow->isSelected(pos.x(), pos.y()); + + // Drag only when the Control key is held +// if ((!_ctrlRequiredForDrag || ev->modifiers() & Qt::ControlModifier) && selected) { +// _dragInfo.state = diPending; +// _dragInfo.start = ev->pos(); +// } else { + // No reason to ever start a drag event + //_dragInfo.state = diNone; + + _preserveLineBreaks = !((modifiers & Qt::ControlModifier) && !(modifiers & Qt::AltModifier)); + _columnSelectionMode = (modifiers & Qt::AltModifier) && (modifiers & Qt::ControlModifier); + + if (_mouseMarks || (modifiers == Qt::ShiftModifier)) { + // Only extend selection for programs not interested in mouse + if (_mouseMarks && (modifiers == Qt::ShiftModifier)) { + extendSelection(position); + } else { + _screenWindow->clearSelection(); + + //pos.ry() += _scrollBar->value(); + _iPntSel = _pntSel = pos; + _actSel = 1; // left mouse button pressed but nothing selected yet. + } + } else { + emit mouseSignal(0, charColumn + 1, charLine + 1, 0); + //emit mouseSignal(0, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); + } + +// if (_underlineLinks && (_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier))) { +// Filter::HotSpot* spot = _filterChain->hotSpotAt(charLine, charColumn); +// if (spot && spot->type() == Filter::HotSpot::Link) { +// QObject action; +// action.setObjectName("open-action"); +// spot->activate(&action); +// } +// } + + } else if (button == Qt::MidButton) { + processMidButtonClick(position, modifiers); + } else if (button == Qt::RightButton) { + if (_mouseMarks || (modifiers & Qt::ShiftModifier)) + ;//emit configureRequest(ev->pos()); + else + emit mouseSignal(2, charColumn + 1, charLine + 1, 0); + //emit mouseSignal(2, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); } } -void KTerminalDisplay::mouseMove(qreal x, qreal y){ - QPoint pos(x, y); +void KTerminalDisplay::mouseMoveEvent(QPoint position, int but, int buts, int mod) +{ + Qt::MouseButton button = (Qt::MouseButton) but; + Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; + Qt::MouseButtons buttons = (Qt::MouseButtons) buts; - if(_mouseMarks){ - int charLine; - int charColumn; - getCharacterPosition(pos, charLine, charColumn); + int charLine = 0; + int charColumn = 0; + getCharacterPosition(position, charLine, charColumn); - emit mouseSignal(0, charColumn + 1, charLine + 1, 1); - } else { - extendSelection(pos); + // handle filters + // change link hot-spot appearance on mouse-over +// Filter::HotSpot* spot = _filterChain->hotSpotAt(charLine, charColumn); +// if (spot && spot->type() == Filter::HotSpot::Link) { +// if (_underlineLinks) { +// QRegion previousHotspotArea = _mouseOverHotspotArea; +// _mouseOverHotspotArea = QRegion(); +// QRect r; +// if (spot->startLine() == spot->endLine()) { +// r.setCoords(spot->startColumn()*_fontWidth + _contentRect.left(), +// spot->startLine()*_fontHeight + _contentRect.top(), +// (spot->endColumn())*_fontWidth + _contentRect.left() - 1, +// (spot->endLine() + 1)*_fontHeight + _contentRect.top() - 1); +// _mouseOverHotspotArea |= r; +// } else { +// r.setCoords(spot->startColumn()*_fontWidth + _contentRect.left(), +// spot->startLine()*_fontHeight + _contentRect.top(), +// (_columns)*_fontWidth + _contentRect.left() - 1, +// (spot->startLine() + 1)*_fontHeight + _contentRect.top() - 1); +// _mouseOverHotspotArea |= r; +// for (int line = spot->startLine() + 1 ; line < spot->endLine() ; line++) { +// r.setCoords(0 * _fontWidth + _contentRect.left(), +// line * _fontHeight + _contentRect.top(), +// (_columns)*_fontWidth + _contentRect.left() - 1, +// (line + 1)*_fontHeight + _contentRect.top() - 1); +// _mouseOverHotspotArea |= r; +// } +// r.setCoords(0 * _fontWidth + _contentRect.left(), +// spot->endLine()*_fontHeight + _contentRect.top(), +// (spot->endColumn())*_fontWidth + _contentRect.left() - 1, +// (spot->endLine() + 1)*_fontHeight + _contentRect.top() - 1); +// _mouseOverHotspotArea |= r; +// } + +// if ((_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier)) && (cursor().shape() != Qt::PointingHandCursor)) +// setCursor(Qt::PointingHandCursor); + +// update(_mouseOverHotspotArea | previousHotspotArea); +// } +// } else if (!_mouseOverHotspotArea.isEmpty()) { +// if ((_underlineLinks && (_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier))) || (cursor().shape() == Qt::PointingHandCursor)) +// setCursor(_mouseMarks ? Qt::IBeamCursor : Qt::ArrowCursor); + +// update(_mouseOverHotspotArea); +// // set hotspot area to an invalid rectangle +// _mouseOverHotspotArea = QRegion(); +// } + + // for auto-hiding the cursor, we need mouseTracking + if (buttons == Qt::NoButton) return; + + // if the terminal is interested in mouse movements + // then emit a mouse movement signal, unless the shift + // key is being held down, which overrides this. + if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) { + int button = 3; + if (buttons & Qt::LeftButton) + button = 0; + if (buttons & Qt::MidButton) + button = 1; + if (buttons & Qt::RightButton) + button = 2; + + emit mouseSignal(button, + charColumn + 1, + charLine + 1, + 1); +// emit mouseSignal(button, +// charColumn + 1, +// charLine + 1 + _scrollBar->value() - _scrollBar->maximum(), +// 1); + + return; } + +// if (_dragInfo.state == diPending) { +// // we had a mouse down, but haven't confirmed a drag yet +// // if the mouse has moved sufficiently, we will confirm + +// const int distance = KGlobalSettings::dndEventDelay(); +// if (ev->x() > _dragInfo.start.x() + distance || ev->x() < _dragInfo.start.x() - distance || +// ev->y() > _dragInfo.start.y() + distance || ev->y() < _dragInfo.start.y() - distance) { +// // we've left the drag square, we can start a real drag operation now + +// _screenWindow->clearSelection(); +// doDrag(); +// } +// return; +// } else if (_dragInfo.state == diDragging) { +// // this isn't technically needed because mouseMoveEvent is suppressed during +// // Qt drag operations, replaced by dragMoveEvent +// return; +// } + + if (_actSel == 0) return; + +// don't extend selection while pasting + if (buttons & Qt::MidButton) return; + + extendSelection(position); } -void KTerminalDisplay::mouseDoubleClick(qreal x, qreal y){ - QPoint pos(x, y); - if(_mouseMarks){ - int charLine; - int charColumn; - getCharacterPosition(pos, charLine, charColumn); +QPoint KTerminalDisplay::findWordEnd(const QPoint &pnt) +{ + const int regSize = qMax(_screenWindow->windowLines(), 10); + const int curLine = _screenWindow->currentLine(); + int i = pnt.y(); + int x = pnt.x(); + int y = i + curLine; + int j = loc(x, i); + QVector lineProperties = _lineProperties; + Screen *screen = _screenWindow->screen(); + Character *image = _image; + Character *tmp_image = NULL; + const QChar selClass = charClass(image[j]); + const int imageSize = regSize * _columns; + const int maxY = _screenWindow->lineCount() - 1; + const int maxX = _columns - 1; - emit mouseSignal(0, charColumn + 1, charLine + 1, 0); - //emit mouseSignal(0, charColumn + 1, charLine + 1, 0); - } else { - _wordSelectionMode = true; - extendSelection(pos); + while (true) { + const int lineCount = lineProperties.count(); + for (;;j++, x++) { + if (x < maxX) { + if (charClass(image[j + 1]) == selClass) + continue; + goto out; + } else if (i < lineCount - 1) { + if (lineProperties[i] & LINE_WRAPPED && + charClass(image[j + 1]) == selClass) { + x = -1; + i++; + y++; + continue; + } + goto out; + } else if (y < maxY) { + if (i < lineCount && !(lineProperties[i] & LINE_WRAPPED)) + goto out; + break; + } else { + goto out; + } + } + int newRegEnd = qMin(y + regSize - 1, maxY); + lineProperties = screen->getLineProperties(y, newRegEnd); + i = 0; + if (!tmp_image) { + tmp_image = new Character[imageSize]; + image = tmp_image; + } + screen->getImage(tmp_image, imageSize, y, newRegEnd); + x--; + j = loc(x, i); } +out: + y -= curLine; + // In word selection mode don't select @ (64) if at end of word. + if (((image[j].rendition & RE_EXTENDED_CHAR) == 0) && + (QChar(image[j].character) == '@') && + (y > pnt.y() || x > pnt.x())) { + if (x > 0) { + x--; + } else { + y--; + } + } + if (tmp_image) { + delete[] tmp_image; + } + return QPoint(x, y); } -void KTerminalDisplay::mouseRelease(qreal x, qreal y){ - _actSel = 0; +QPoint KTerminalDisplay::findWordStart(const QPoint &pnt) +{ + const int regSize = qMax(_screenWindow->windowLines(), 10); + const int curLine = _screenWindow->currentLine(); + int i = pnt.y(); + int x = pnt.x(); + int y = i + curLine; + int j = loc(x, i); + QVector lineProperties = _lineProperties; + Screen *screen = _screenWindow->screen(); + Character *image = _image; + Character *tmp_image = NULL; + const QChar selClass = charClass(image[j]); + const int imageSize = regSize * _columns; - if(_mouseMarks){ - int charLine; - int charColumn; - getCharacterPosition(QPoint(x,y), charLine, charColumn); + while (true) { + for (;;j--, x--) { + if (x > 0) { + if (charClass(image[j - 1]) == selClass) + continue; + goto out; + } else if (i > 0) { + if (lineProperties[i - 1] & LINE_WRAPPED && + charClass(image[j - 1]) == selClass) { + x = _columns; + i--; + y--; + continue; + } + goto out; + } else if (y > 0) { + break; + } else { + goto out; + } + } + int newRegStart = qMax(0, y - regSize); + lineProperties = screen->getLineProperties(newRegStart, y - 1); + i = y - newRegStart; + if (!tmp_image) { + tmp_image = new Character[imageSize]; + image = tmp_image; + } + screen->getImage(tmp_image, imageSize, newRegStart, y - 1); + j = loc(x, i); + } +out: + if (tmp_image) { + delete[] tmp_image; + } + return QPoint(x, y - curLine); +} - emit mouseSignal(0, charColumn + 1, charLine + 1, 2); + + +void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) +{ + Qt::MouseButton button = (Qt::MouseButton) but; + Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; + + // Yes, successive middle click can trigger this event + if (button == Qt::MidButton) { + processMidButtonClick(position, modifiers); + return; + } + + if (button != Qt::LeftButton) return; + if (!_screenWindow) return; + + int charLine = 0; + int charColumn = 0; + + getCharacterPosition(position, charLine, charColumn); + + // pass on double click as two clicks. + if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) { + // Send just _ONE_ click event, since the first click of the double click + // was already sent by the click handler + emit mouseSignal(0, charColumn + 1, + charLine + 1, + 0); + /*emit mouseSignal(0, charColumn + 1, + charLine + 1 + _scrollBar->value() - _scrollBar->maximum(), + 0); */ // left button + return; + } + + _screenWindow->clearSelection(); + + _wordSelectionMode = true; + _actSel = 2; // within selection + + _iPntSel = QPoint(charColumn, charLine); + const QPoint bgnSel = findWordStart(_iPntSel); + const QPoint endSel = findWordEnd(_iPntSel); + //_iPntSel.ry() += _scrollBar->value(); + + _screenWindow->setSelectionStart(bgnSel.x() , bgnSel.y() , false); + _screenWindow->setSelectionEnd(endSel.x() , endSel.y()); + copyToX11Selection(); + +// _possibleTripleClick = true; + +// QTimer::singleShot(QApplication::doubleClickInterval(), this, +// SLOT(tripleClickTimeout())); +} + + +void KTerminalDisplay::copyToX11Selection() +{ + if (!_screenWindow) + return; + + QString text = _screenWindow->selectedText(_preserveLineBreaks); + if (text.isEmpty()) + return; + + QGuiApplication::clipboard()->setText(text, QClipboard::Selection); + +// if (_autoCopySelectedText) +// QApplication::clipboard()->setText(text, QClipboard::Clipboard); +} + + +void KTerminalDisplay::mouseReleaseEvent(QPoint position, int but, int mod) +{ + Qt::MouseButton button = (Qt::MouseButton) but; + Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; + + if (!_screenWindow) + return; + + int charLine; + int charColumn; + getCharacterPosition(position, charLine, charColumn); + + if (button == Qt::LeftButton) { +// if (_dragInfo.state == diPending) { + // We had a drag event pending but never confirmed. Kill selection +// _screenWindow->clearSelection(); +// } else { + if (_actSel > 1) { + copyToX11Selection(); + } + + _actSel = 0; + + //FIXME: emits a release event even if the mouse is + // outside the range. The procedure used in `mouseMoveEvent' + // applies here, too. + + if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) + emit mouseSignal(0, + charColumn + 1, + charLine + 1 , 2); +// emit mouseSignal(0, +// charColumn + 1, +// charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 2); +// } +// _dragInfo.state = diNone; + } + + if (!_mouseMarks && + (button == Qt::RightButton || button == Qt::MidButton) && + !(modifiers & Qt::ShiftModifier)) { + emit mouseSignal(button == Qt::MidButton ? 1 : 2, + charColumn + 1, + charLine + 1, + 2); +// emit mouseSignal(ev->button() == Qt::MidButton ? 1 : 2, +// charColumn + 1, +// charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , +// 2); } } @@ -1361,16 +1807,33 @@ void KTerminalDisplay::updateLineProperties() _lineProperties = _screenWindow->getLineProperties(); } -QChar KTerminalDisplay::charClass(QChar qch) const +QChar KTerminalDisplay::charClass(const Character& ch) const { - if ( qch.isSpace() ) return ' '; + if (ch.rendition & RE_EXTENDED_CHAR) { + ushort extendedCharLength = 0; + const ushort* chars = ExtendedCharTable::instance.lookupExtendedChar(ch.character, extendedCharLength); + if (chars && extendedCharLength > 0) { + const QString s = QString::fromUtf16(chars, extendedCharLength); + if (_wordCharacters.contains(s, Qt::CaseInsensitive)) + return 'a'; + bool allLetterOrNumber = true; + for (int i = 0; allLetterOrNumber && i < s.size(); ++i) + allLetterOrNumber = s.at(i).isLetterOrNumber(); + return allLetterOrNumber ? 'a' : s.at(0); + } + return 0; + } else { + const QChar qch(ch.character); + if (qch.isSpace()) return ' '; - if ( qch.isLetterOrNumber() || _wordCharacters.contains(qch, Qt::CaseInsensitive ) ) - return 'a'; + if (qch.isLetterOrNumber() || _wordCharacters.contains(qch, Qt::CaseInsensitive)) + return 'a'; - return qch; + return qch; + } } + void KTerminalDisplay::setWordCharacters(const QString& wc) { _wordCharacters = wc; diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index 693fb85..d7b41d6 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -312,10 +312,6 @@ public slots: QStringList availableColorSchemes(); void scrollWheel(qreal x, qreal y, int lines); - void mousePress(qreal x, qreal y); - void mouseMove(qreal x, qreal y); - void mouseDoubleClick(qreal x, qreal y); - void mouseRelease(qreal x, qreal y); void scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount); @@ -477,7 +473,10 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); QRect geometryRound(const QRectF &r) const; - //void mousePressEvent(QMouseEvent*ev); + Q_INVOKABLE void mousePressEvent(QPoint position, int but, int mod); + Q_INVOKABLE void mouseReleaseEvent(QPoint position, int but, int mod); + Q_INVOKABLE void mouseDoubleClickEvent(QPoint position, int but, int mod); + Q_INVOKABLE void mouseMoveEvent(QPoint position, int but, int buts, int mod); //void mouseReleaseEvent( QMouseEvent* ); //void mouseMoveEvent( QMouseEvent* ); @@ -497,7 +496,7 @@ protected: // - A space (returns ' ') // - Part of a word (returns 'a') // - Other characters (returns the input character) - QChar charClass(QChar ch) const; + QChar charClass(const Character& ch) const; void clearImage(); @@ -594,6 +593,14 @@ private: // redraws the cursor void updateCursor(); + QPoint findWordStart(const QPoint &pnt); + QPoint findWordEnd(const QPoint &pnt); + void processMidButtonClick(QPoint &position, Qt::KeyboardModifier modifiers); + void copyToX11Selection(); + void pasteFromClipboard(bool appendEnter); + void pasteFromX11Selection(bool appendEnter); + void doPaste(QString text, bool appendReturn); + bool handleShortcutOverrideEvent(QKeyEvent* event); ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -- 2.47.2 From a0bfe0f77ffb21058f78c58d25ec63052bdf41ea Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 21:53:15 +0200 Subject: [PATCH 054/477] Much improved mouse emulation. --- konsole-qml-plugin/src/Character.h | 46 +- konsole-qml-plugin/src/Emulation.h | 6 + konsole-qml-plugin/src/Session.cpp | 3 +- konsole-qml-plugin/src/Vt102Emulation.cpp | 767 +++++++++++++--------- konsole-qml-plugin/src/Vt102Emulation.h | 239 +++---- 5 files changed, 599 insertions(+), 462 deletions(-) diff --git a/konsole-qml-plugin/src/Character.h b/konsole-qml-plugin/src/Character.h index 30fb0b8..f29470e 100644 --- a/konsole-qml-plugin/src/Character.h +++ b/konsole-qml-plugin/src/Character.h @@ -1,6 +1,6 @@ /* This file is part of Konsole, KDE's terminal. - + Copyright 2007-2008 by Robert Knight Copyright 1997,1998 by Lars Doelle @@ -53,7 +53,7 @@ static const int LINE_DOUBLEHEIGHT = (1 << 2); class Character { public: - /** + /** * Constructs a new character. * * @param _c The unicode character value of this character. @@ -71,25 +71,25 @@ public: { /** The unicode character value for this character. */ quint16 character; - /** + /** * Experimental addition which allows a single Character instance to contain more than * one unicode character. * * charSequence is a hash code which can be used to look up the unicode * character sequence in the ExtendedCharTable used to create the sequence. */ - quint16 charSequence; + quint16 charSequence; }; /** A combination of RENDITION flags which specify options for drawing the character. */ quint8 rendition; /** The foreground color used to draw this character. */ - CharacterColor foregroundColor; + CharacterColor foregroundColor; /** The color used to draw this character's background. */ CharacterColor backgroundColor; - /** + /** * Returns true if this character has a transparent background when * it is drawn with the specified @p palette. */ @@ -97,16 +97,16 @@ public: /** * Returns true if this character should always be drawn in bold when * it is drawn with the specified @p palette, independent of whether - * or not the character has the RE_BOLD rendition flag. + * or not the character has the RE_BOLD rendition flag. */ ColorEntry::FontWeight fontWeight(const ColorEntry* base) const; - - /** + + /** * returns true if the format (color, rendition flag) of the compared characters is equal */ bool equalsFormat(const Character &other) const; - /** + /** * Compares two characters and returns true if they have the same unicode character value, * rendition and colors. */ @@ -119,36 +119,36 @@ public: }; inline bool operator == (const Character& a, const Character& b) -{ - return a.character == b.character && - a.rendition == b.rendition && - a.foregroundColor == b.foregroundColor && +{ + return a.character == b.character && + a.rendition == b.rendition && + a.foregroundColor == b.foregroundColor && a.backgroundColor == b.backgroundColor; } inline bool operator != (const Character& a, const Character& b) { - return a.character != b.character || - a.rendition != b.rendition || - a.foregroundColor != b.foregroundColor || + return a.character != b.character || + a.rendition != b.rendition || + a.foregroundColor != b.foregroundColor || a.backgroundColor != b.backgroundColor; } inline bool Character::isTransparent(const ColorEntry* base) const { - return ((backgroundColor._colorSpace == COLOR_SPACE_DEFAULT) && + return ((backgroundColor._colorSpace == COLOR_SPACE_DEFAULT) && base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].transparent) - || ((backgroundColor._colorSpace == COLOR_SPACE_SYSTEM) && + || ((backgroundColor._colorSpace == COLOR_SPACE_SYSTEM) && base[backgroundColor._u+2+(backgroundColor._v?BASE_COLORS:0)].transparent); } inline bool Character::equalsFormat(const Character& other) const { - return + return backgroundColor==other.backgroundColor && foregroundColor==other.foregroundColor && rendition==other.rendition; -} +} inline ColorEntry::FontWeight Character::fontWeight(const ColorEntry* base) const { @@ -193,7 +193,7 @@ public: * which was added to the table using createExtendedChar(). * * @param hash The hash key returned by createExtendedChar() - * @param length This variable is set to the length of the + * @param length This variable is set to the length of the * character sequence. * * @return A unicode character sequence of size @p length. @@ -205,7 +205,7 @@ public: private: // calculates the hash key of a sequence of unicode points of size 'length' ushort extendedCharHash(ushort* unicodePoints , ushort length) const; - // tests whether the entry in the table specified by 'hash' matches the + // tests whether the entry in the table specified by 'hash' matches the // character sequence 'unicodePoints' of size 'length' bool extendedCharMatch(ushort hash , ushort* unicodePoints , ushort length) const; // internal, maps hash keys to character sequence buffers. The first ushort diff --git a/konsole-qml-plugin/src/Emulation.h b/konsole-qml-plugin/src/Emulation.h index 49f707d..a01d63e 100644 --- a/konsole-qml-plugin/src/Emulation.h +++ b/konsole-qml-plugin/src/Emulation.h @@ -376,6 +376,12 @@ signals: */ void imageSizeChanged(int lineCount , int columnCount); + /** + * Emitted after receiving the escape sequence which asks to change + * the terminal emulator's size + */ + void imageResizeRequest(const QSize& sizz); + /** * Emitted when the terminal program requests to change various properties * of the terminal display. diff --git a/konsole-qml-plugin/src/Session.cpp b/konsole-qml-plugin/src/Session.cpp index 41b9738..1e499ea 100644 --- a/konsole-qml-plugin/src/Session.cpp +++ b/konsole-qml-plugin/src/Session.cpp @@ -48,9 +48,10 @@ #include "ShellCommand.h" // REUSE THIS #include "Vt102Emulation.h" // REUSE THIS - int Session::lastSessionId = 0; +using namespace Konsole; + Session::Session() : _shellProcess(0) , _emulation(0) diff --git a/konsole-qml-plugin/src/Vt102Emulation.cpp b/konsole-qml-plugin/src/Vt102Emulation.cpp index f38787a..4663b41 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.cpp +++ b/konsole-qml-plugin/src/Vt102Emulation.cpp @@ -1,6 +1,6 @@ /* This file is part of Konsole, an X terminal. - + Copyright 2007-2008 by Robert Knight Copyright 1997,1998 by Lars Doelle @@ -23,47 +23,57 @@ // Own #include "Vt102Emulation.h" -// XKB -//#include - -// this allows konsole to be compiled without XKB and XTEST extensions -// even though it might be available on a particular system. -#if defined(AVOID_XKB) - #undef HAVE_XKB -#endif - -#if defined(HAVE_XKB) - void scrolllock_set_off(); - void scrolllock_set_on(); -#endif - -// Standard +// Standard #include #include -#include // Qt #include +#include #include -#include // KDE -//#include -//#include +//#include +//#include // Konsole #include "KeyboardTranslator.h" #include "Screen.h" +#include "TerminalDisplay.h" -Vt102Emulation::Vt102Emulation() +using Konsole::Vt102Emulation; + +/* + The VT100 has 32 special graphical characters. The usual vt100 extended + xterm fonts have these at 0x00..0x1f. + + QT's iso mapping leaves 0x00..0x7f without any changes. But the graphicals + come in here as proper unicode characters. + + We treat non-iso10646 fonts as VT100 extended and do the required mapping + from unicode to 0x00..0x1f. The remaining translation is then left to the + QCodec. +*/ + +// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i. + +unsigned short Konsole::vt100_graphics[32] = { + // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15 + 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, + 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, + 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534, + 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7 +}; + +Vt102Emulation::Vt102Emulation() : Emulation(), - _titleUpdateTimer(new QTimer(this)) + _titleUpdateTimer(new QTimer(this)) { - _titleUpdateTimer->setSingleShot(true); - QObject::connect(_titleUpdateTimer , SIGNAL(timeout()) , this , SLOT(updateTitle())); + _titleUpdateTimer->setSingleShot(true); + QObject::connect(_titleUpdateTimer , SIGNAL(timeout()) , this , SLOT(updateTitle())); - initTokenizer(); - reset(); + initTokenizer(); + reset(); } Vt102Emulation::~Vt102Emulation() @@ -71,21 +81,29 @@ Vt102Emulation::~Vt102Emulation() void Vt102Emulation::clearEntireScreen() { - _currentScreen->clearEntireScreen(); - bufferedUpdate(); + _currentScreen->clearEntireScreen(); + bufferedUpdate(); } void Vt102Emulation::reset() { - resetTokenizer(); - resetModes(); - resetCharset(0); - _screen[0]->reset(); - resetCharset(1); - _screen[1]->reset(); - setCodec(LocaleCodec); - - bufferedUpdate(); + // Save the current codec so we can set it later. + // Ideally we would want to use the profile setting + const QTextCodec* currentCodec = codec(); + + resetTokenizer(); + resetModes(); + resetCharset(0); + _screen[0]->reset(); + resetCharset(1); + _screen[1]->reset(); + + if (currentCodec) + setCodec(currentCodec); + else + setCodec(LocaleCodec); + + bufferedUpdate(); } /* ------------------------------------------------------------------------- */ @@ -135,14 +153,14 @@ void Vt102Emulation::reset() - VT52 - VT52 escape codes - - 'Y'{Pc}{Pc} - - XTE_HA - Xterm window/terminal attribute commands + - XTE_HA - Xterm window/terminal attribute commands of the form `]' {Pn} `;' {Text} (Note that these are handled differently to the other formats) The last two forms allow list of arguments. Since the elements of the lists are treated individually the same way, they are passed as individual tokens to the interpretation. Further, because the - meaning of the parameters are names (althought represented as numbers), + meaning of the parameters are names (although represented as numbers), they are includes within the token ('N'). */ @@ -162,7 +180,7 @@ void Vt102Emulation::reset() #define TY_CSI_PG(A) TY_CONSTRUCT(9,A,0) #define TY_CSI_PE(A) TY_CONSTRUCT(10,A,0) -#define MAX_ARGUMENT 4096 +const int MAX_ARGUMENT = 4096; // Tokenizer --------------------------------------------------------------- -- @@ -175,64 +193,62 @@ void Vt102Emulation::reset() void Vt102Emulation::resetTokenizer() { - tokenBufferPos = 0; - argc = 0; - argv[0] = 0; - argv[1] = 0; + tokenBufferPos = 0; + argc = 0; + argv[0] = 0; + argv[1] = 0; } void Vt102Emulation::addDigit(int digit) { - if (argv[argc] < MAX_ARGUMENT) - argv[argc] = 10*argv[argc] + digit; + if (argv[argc] < MAX_ARGUMENT) + argv[argc] = 10 * argv[argc] + digit; } void Vt102Emulation::addArgument() { - argc = qMin(argc+1,MAXARGS-1); - argv[argc] = 0; + argc = qMin(argc + 1, MAXARGS - 1); + argv[argc] = 0; } void Vt102Emulation::addToCurrentToken(int cc) { - tokenBuffer[tokenBufferPos] = cc; - tokenBufferPos = qMin(tokenBufferPos+1,MAX_TOKEN_LENGTH-1); + tokenBuffer[tokenBufferPos] = cc; + tokenBufferPos = qMin(tokenBufferPos + 1, MAX_TOKEN_LENGTH - 1); } // Character Class flags used while decoding - -#define CTL 1 // Control character -#define CHR 2 // Printable character -#define CPN 4 // TODO: Document me -#define DIG 8 // Digit -#define SCS 16 // TODO: Document me -#define GRP 32 // TODO: Document me -#define CPS 64 // Character which indicates end of window resize - // escape sequence '\e[8;;t' +const int CTL = 1; // Control character +const int CHR = 2; // Printable character +const int CPN = 4; // TODO: Document me +const int DIG = 8; // Digit +const int SCS = 16; // Select Character Set +const int GRP = 32; // TODO: Document me +const int CPS = 64; // Character which indicates end of window resize void Vt102Emulation::initTokenizer() -{ - int i; - quint8* s; - for(i = 0;i < 256; ++i) - charClass[i] = 0; - for(i = 0;i < 32; ++i) - charClass[i] |= CTL; - for(i = 32;i < 256; ++i) - charClass[i] |= CHR; - for(s = (quint8*)"@ABCDGHILMPSTXZcdfry"; *s; ++s) - charClass[*s] |= CPN; - // resize = \e[8;;t - for(s = (quint8*)"t"; *s; ++s) - charClass[*s] |= CPS; - for(s = (quint8*)"0123456789"; *s; ++s) - charClass[*s] |= DIG; - for(s = (quint8*)"()+*%"; *s; ++s) - charClass[*s] |= SCS; - for(s = (quint8*)"()+*#[]%"; *s; ++s) - charClass[*s] |= GRP; +{ + int i; + quint8* s; + for (i = 0; i < 256; ++i) + charClass[i] = 0; + for (i = 0; i < 32; ++i) + charClass[i] |= CTL; + for (i = 32; i < 256; ++i) + charClass[i] |= CHR; + for (s = (quint8*)"@ABCDGHILMPSTXZcdfry"; *s; ++s) + charClass[*s] |= CPN; + // resize = \e[8;;t + for (s = (quint8*)"t"; *s; ++s) + charClass[*s] |= CPS; + for (s = (quint8*)"0123456789"; *s; ++s) + charClass[*s] |= DIG; + for (s = (quint8*)"()+*%"; *s; ++s) + charClass[*s] |= SCS; + for (s = (quint8*)"()+*#[]%"; *s; ++s) + charClass[*s] |= GRP; - resetTokenizer(); + resetTokenizer(); } /* Ok, here comes the nasty part of the decoder. @@ -246,10 +262,10 @@ void Vt102Emulation::initTokenizer() - P is the length of the token scanned so far. - L (often P-1) is the position on which contents we base a decision. - C is a character or a group of characters (taken from 'charClass'). - + - 'cc' is the current character - 's' is a pointer to the start of the token buffer - - 'p' is the current position within the token buffer + - 'p' is the current position within the token buffer Note that they need to applied in proper order. */ @@ -267,36 +283,37 @@ void Vt102Emulation::initTokenizer() #define Xte (Xpe && cc == 7 ) #define ces(C) (cc < 256 && (charClass[cc] & (C)) == (C) && !Xte) -#define ESC 27 #define CNTL(c) ((c)-'@') +const int ESC = 27; +const int DEL = 127; // process an incoming unicode character void Vt102Emulation::receiveChar(int cc) -{ - if (cc == 127) +{ + if (cc == DEL) return; //VT100: ignore. if (ces(CTL)) - { + { // DEC HACK ALERT! Control Characters are allowed *within* esc sequences in VT100 // This means, they do neither a resetTokenizer() nor a pushToToken(). Some of them, do // of course. Guess this originates from a weakly layered handling of the X-on // X-off protocol, which comes really below this level. - if (cc == CNTL('X') || cc == CNTL('Z') || cc == ESC) + if (cc == CNTL('X') || cc == CNTL('Z') || cc == ESC) resetTokenizer(); //VT100: CAN or SUB - if (cc != ESC) - { - processToken(TY_CTL(cc+'@' ),0,0); - return; + if (cc != ESC) + { + processToken(TY_CTL(cc+'@' ),0,0); + return; } } // advance the state - addToCurrentToken(cc); + addToCurrentToken(cc); int* s = tokenBuffer; - int p = tokenBufferPos; + const int p = tokenBufferPos; - if (getMode(MODE_Ansi)) + if (getMode(MODE_Ansi)) { if (lec(1,0,ESC)) { return; } if (lec(1,0,ESC+128)) { s[0] = ESC; receiveChar('['); return; } @@ -313,63 +330,63 @@ void Vt102Emulation::receiveChar(int cc) if (eps( CPN)) { processToken( TY_CSI_PN(cc), argv[0],argv[1]); resetTokenizer(); return; } // resize = \e[8;;t - if (eps(CPS)) - { - processToken( TY_CSI_PS(cc, argv[0]), argv[1], argv[2]); - resetTokenizer(); - return; + if (eps(CPS)) + { + processToken( TY_CSI_PS(cc, argv[0]), argv[1], argv[2]); + resetTokenizer(); + return; } if (epe( )) { processToken( TY_CSI_PE(cc), 0, 0); resetTokenizer(); return; } if (ees(DIG)) { addDigit(cc-'0'); return; } if (eec(';')) { addArgument(); return; } - for (int i=0;i<=argc;i++) + for (int i = 0; i <= argc; i++) { - if (epp()) - processToken( TY_CSI_PR(cc,argv[i]), 0, 0); - else if (egt()) - processToken( TY_CSI_PG(cc), 0, 0); // spec. case for ESC]>0c or ESC]>c + if (epp()) + processToken(TY_CSI_PR(cc,argv[i]), 0, 0); + else if (egt()) + processToken(TY_CSI_PG(cc), 0, 0); // spec. case for ESC]>0c or ESC]>c else if (cc == 'm' && argc - i >= 4 && (argv[i] == 38 || argv[i] == 48) && argv[i+1] == 2) - { + { // ESC[ ... 48;2;;; ... m -or- ESC[ ... 38;2;;; ... m i += 2; - processToken( TY_CSI_PS(cc, argv[i-2]), COLOR_SPACE_RGB, (argv[i] << 16) | (argv[i+1] << 8) | argv[i+2]); + processToken(TY_CSI_PS(cc, argv[i-2]), COLOR_SPACE_RGB, (argv[i] << 16) | (argv[i+1] << 8) | argv[i+2]); i += 2; } else if (cc == 'm' && argc - i >= 2 && (argv[i] == 38 || argv[i] == 48) && argv[i+1] == 5) - { + { // ESC[ ... 48;5; ... m -or- ESC[ ... 38;5; ... m i += 2; - processToken( TY_CSI_PS(cc, argv[i-2]), COLOR_SPACE_256, argv[i]); + processToken(TY_CSI_PS(cc, argv[i-2]), COLOR_SPACE_256, argv[i]); } else - processToken( TY_CSI_PS(cc,argv[i]), 0, 0); + processToken(TY_CSI_PS(cc,argv[i]), 0, 0); } resetTokenizer(); } - else + else { // VT52 Mode - if (lec(1,0,ESC)) + if (lec(1,0,ESC)) + return; + if (les(1,0,CHR)) + { + processToken( TY_CHR(), s[0], 0); + resetTokenizer(); return; - if (les(1,0,CHR)) - { - processToken( TY_CHR(), s[0], 0); - resetTokenizer(); - return; } - if (lec(2,1,'Y')) + if (lec(2,1,'Y')) return; - if (lec(3,1,'Y')) + if (lec(3,1,'Y')) + return; + if (p < 4) + { + processToken(TY_VT52(s[1] ), 0, 0); + resetTokenizer(); return; - if (p < 4) - { - processToken( TY_VT52(s[1] ), 0, 0); - resetTokenizer(); - return; } - processToken( TY_VT52(s[1]), s[2], s[3]); - resetTokenizer(); + processToken(TY_VT52(s[1]), s[2], s[3]); + resetTokenizer(); return; } } @@ -379,24 +396,24 @@ void Vt102Emulation::processWindowAttributeChange() // See Session::UserTitleChange for possible values int attributeToChange = 0; int i; - for (i = 2; i < tokenBufferPos && - tokenBuffer[i] >= '0' && + for (i = 2; i < tokenBufferPos && + tokenBuffer[i] >= '0' && tokenBuffer[i] <= '9'; i++) { attributeToChange = 10 * attributeToChange + (tokenBuffer[i]-'0'); } - if (tokenBuffer[i] != ';') - { - reportDecodingError(); - return; + if (tokenBuffer[i] != ';') + { + reportDecodingError(); + return; } - + QString newValue; newValue.reserve(tokenBufferPos-i-2); for (int j = 0; j < tokenBufferPos-i-2; j++) newValue[j] = tokenBuffer[i+1+j]; - + _pendingTitleUpdates[attributeToChange] = newValue; _titleUpdateTimer->start(20); } @@ -406,9 +423,9 @@ void Vt102Emulation::updateTitle() QListIterator iter( _pendingTitleUpdates.keys() ); while (iter.hasNext()) { int arg = iter.next(); - emit titleChanged( arg , _pendingTitleUpdates[arg] ); + emit titleChanged( arg , _pendingTitleUpdates[arg] ); } - _pendingTitleUpdates.clear(); + _pendingTitleUpdates.clear(); } // Interpreting Codes --------------------------------------------------------- @@ -418,7 +435,7 @@ void Vt102Emulation::updateTitle() meaning is assigned to them. These are either operations of the current _screen, or of the emulation class itself. - The token to be interpreteted comes in as a machine word + The token to be interpreted comes in as a machine word possibly accompanied by two parameters. Likewise, the operations assigned to, come with up to two @@ -433,7 +450,6 @@ void Vt102Emulation::processToken(int token, int p, int q) { switch (token) { - case TY_CHR( ) : _currentScreen->displayCharacter (p ); break; //UTF16 // 127 DEL : ignored on input @@ -509,11 +525,11 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_ESC_CS('%', 'G') : setCodec (Utf8Codec ); break; //LINUX case TY_ESC_CS('%', '@') : setCodec (LocaleCodec ); break; //LINUX - case TY_ESC_DE('3' ) : /* Double height line, top half */ + case TY_ESC_DE('3' ) : /* Double height line, top half */ _currentScreen->setLineProperty( LINE_DOUBLEWIDTH , true ); _currentScreen->setLineProperty( LINE_DOUBLEHEIGHT , true ); break; - case TY_ESC_DE('4' ) : /* Double height line, bottom half */ + case TY_ESC_DE('4' ) : /* Double height line, bottom half */ _currentScreen->setLineProperty( LINE_DOUBLEWIDTH , true ); _currentScreen->setLineProperty( LINE_DOUBLEHEIGHT , true ); break; @@ -521,14 +537,16 @@ void Vt102Emulation::processToken(int token, int p, int q) _currentScreen->setLineProperty( LINE_DOUBLEWIDTH , false); _currentScreen->setLineProperty( LINE_DOUBLEHEIGHT , false); break; - case TY_ESC_DE('6' ) : /* Double width, single height line*/ - _currentScreen->setLineProperty( LINE_DOUBLEWIDTH , true); + case TY_ESC_DE('6' ) : /* Double width, single height line*/ + _currentScreen->setLineProperty( LINE_DOUBLEWIDTH , true); _currentScreen->setLineProperty( LINE_DOUBLEHEIGHT , false); break; case TY_ESC_DE('8' ) : _currentScreen->helpAlign ( ); break; // resize = \e[8;;t - case TY_CSI_PS('t', 8) : setImageSize( q /* columns */, p /* lines */ ); break; + case TY_CSI_PS('t', 8) : setImageSize( p /*lines */, q /* columns */ ); + emit imageResizeRequest(QSize(q, p)); + break; // change tab text color : \e[28;t color: 0-16,777,215 case TY_CSI_PS('t', 28) : emit changeTabTextColorRequest ( p ); break; @@ -552,6 +570,7 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PS('m', 0) : _currentScreen->setDefaultRendition ( ); break; case TY_CSI_PS('m', 1) : _currentScreen-> setRendition (RE_BOLD ); break; //VT100 + //case TY_CSI_PS('m', 3) : _currentScreen-> setRendition (RE_ITALIC ); break; //VT100 case TY_CSI_PS('m', 4) : _currentScreen-> setRendition (RE_UNDERLINE); break; //VT100 case TY_CSI_PS('m', 5) : _currentScreen-> setRendition (RE_BLINK ); break; //VT100 case TY_CSI_PS('m', 7) : _currentScreen-> setRendition (RE_REVERSE ); break; @@ -559,6 +578,7 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PS('m', 11) : /* IGNORED: mapping related */ break; //LINUX case TY_CSI_PS('m', 12) : /* IGNORED: mapping related */ break; //LINUX case TY_CSI_PS('m', 22) : _currentScreen->resetRendition (RE_BOLD ); break; + //case TY_CSI_PS('m', 23) : _currentScreen->resetRendition (RE_ITALIC ); break; //VT100 case TY_CSI_PS('m', 24) : _currentScreen->resetRendition (RE_UNDERLINE); break; case TY_CSI_PS('m', 25) : _currentScreen->resetRendition (RE_BLINK ); break; case TY_CSI_PS('m', 27) : _currentScreen->resetRendition (RE_REVERSE ); break; @@ -622,6 +642,8 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PN('B' ) : _currentScreen->cursorDown (p ); break; //VT100 case TY_CSI_PN('C' ) : _currentScreen->cursorRight (p ); break; //VT100 case TY_CSI_PN('D' ) : _currentScreen->cursorLeft (p ); break; //VT100 + case TY_CSI_PN('E' ) : /* Not implemented: cursor next p lines */ break; //VT100 + case TY_CSI_PN('F' ) : /* Not implemented: cursor preceding p lines */ break; //VT100 case TY_CSI_PN('G' ) : _currentScreen->setCursorX (p ); break; //LINUX case TY_CSI_PN('H' ) : _currentScreen->setCursorYX (p, q); break; //VT100 case TY_CSI_PN('I' ) : _currentScreen->tab (p ); break; @@ -645,8 +667,8 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PR('l', 2) : resetMode (MODE_Ansi ); break; //VT100 - case TY_CSI_PR('h', 3) : setMode (MODE_132Columns);break; //VT100 - case TY_CSI_PR('l', 3) : resetMode (MODE_132Columns);break; //VT100 + case TY_CSI_PR('h', 3) : setMode (MODE_132Columns); break; //VT100 + case TY_CSI_PR('l', 3) : resetMode (MODE_132Columns); break; //VT100 case TY_CSI_PR('h', 4) : /* IGNORED: soft scrolling */ break; //VT100 case TY_CSI_PR('l', 4) : /* IGNORED: soft scrolling */ break; //VT100 @@ -708,14 +730,14 @@ void Vt102Emulation::processToken(int token, int p, int q) // SET_BTN_EVENT_MOUSE 1002 // SET_ANY_EVENT_MOUSE 1003 // - + //Note about mouse modes: //There are four mouse modes which xterm-compatible terminals can support - 1000,1001,1002,1003 //Konsole currently supports mode 1000 (basic mouse press and release) and mode 1002 (dragging the mouse). - //TODO: Implementation of mouse modes 1001 (something called hilight tracking) and + //TODO: Implementation of mouse modes 1001 (something called hilight tracking) and //1003 (a slight variation on dragging the mouse) // - + case TY_CSI_PR('h', 1000) : setMode (MODE_Mouse1000); break; //XTERM case TY_CSI_PR('l', 1000) : resetMode (MODE_Mouse1000); break; //XTERM case TY_CSI_PR('s', 1000) : saveMode (MODE_Mouse1000); break; //XTERM @@ -736,6 +758,21 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PR('s', 1003) : saveMode (MODE_Mouse1003); break; //XTERM case TY_CSI_PR('r', 1003) : restoreMode (MODE_Mouse1003); break; //XTERM + case TY_CSI_PR('h', 1005) : setMode (MODE_Mouse1005); break; //XTERM + case TY_CSI_PR('l', 1005) : resetMode (MODE_Mouse1005); break; //XTERM + case TY_CSI_PR('s', 1005) : saveMode (MODE_Mouse1005); break; //XTERM + case TY_CSI_PR('r', 1005) : restoreMode (MODE_Mouse1005); break; //XTERM + + case TY_CSI_PR('h', 1006) : setMode (MODE_Mouse1006); break; //XTERM + case TY_CSI_PR('l', 1006) : resetMode (MODE_Mouse1006); break; //XTERM + case TY_CSI_PR('s', 1006) : saveMode (MODE_Mouse1006); break; //XTERM + case TY_CSI_PR('r', 1006) : restoreMode (MODE_Mouse1006); break; //XTERM + + case TY_CSI_PR('h', 1015) : setMode (MODE_Mouse1015); break; //URXVT + case TY_CSI_PR('l', 1015) : resetMode (MODE_Mouse1015); break; //URXVT + case TY_CSI_PR('s', 1015) : saveMode (MODE_Mouse1015); break; //URXVT + case TY_CSI_PR('r', 1015) : restoreMode (MODE_Mouse1015); break; //URXVT + case TY_CSI_PR('h', 1034) : /* IGNORED: 8bitinput activation */ break; //XTERM case TY_CSI_PR('h', 1047) : setMode (MODE_AppScreen); break; //XTERM @@ -754,6 +791,11 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PR('h', 1049) : saveCursor(); _screen[1]->clearEntireScreen(); setMode(MODE_AppScreen); break; //XTERM case TY_CSI_PR('l', 1049) : resetMode(MODE_AppScreen); restoreCursor(); break; //XTERM + case TY_CSI_PR('h', 2004) : setMode (MODE_BracketedPaste); break; //XTERM + case TY_CSI_PR('l', 2004) : resetMode (MODE_BracketedPaste); break; //XTERM + case TY_CSI_PR('s', 2004) : saveMode (MODE_BracketedPaste); break; //XTERM + case TY_CSI_PR('r', 2004) : restoreMode (MODE_BracketedPaste); break; //XTERM + //FIXME: weird DEC reset sequence case TY_CSI_PE('p' ) : /* IGNORED: reset ( ) */ break; @@ -778,17 +820,17 @@ void Vt102Emulation::processToken(int token, int p, int q) case TY_CSI_PG('c' ) : reportSecondaryAttributes( ); break; //VT100 - default: - reportDecodingError(); + default: + reportDecodingError(); break; }; } void Vt102Emulation::clearScreenAndSetColumns(int columnCount) { - setImageSize(_currentScreen->getLines(),columnCount); + setImageSize(_currentScreen->getLines(),columnCount); clearEntireScreen(); - setDefaultMargins(); + setDefaultMargins(); _currentScreen->setCursorYX(0,0); } @@ -797,13 +839,13 @@ void Vt102Emulation::sendString(const char* s , int length) if ( length >= 0 ) emit sendData(s,length); else - emit sendData(s,strlen(s)); + emit sendData(s,qstrlen(s)); } void Vt102Emulation::reportCursorPosition() -{ +{ char tmp[20]; - sprintf(tmp,"\033[%d;%dR",_currentScreen->getCursorY()+1,_currentScreen->getCursorX()+1); + snprintf(tmp, sizeof(tmp), "\033[%d;%dR", _currentScreen->getCursorY()+1, _currentScreen->getCursorX()+1); sendString(tmp); } @@ -822,7 +864,7 @@ void Vt102Emulation::reportTerminalType() void Vt102Emulation::reportSecondaryAttributes() { - // Seconday device attribute response (Request was: ^[[>0c or ^[[>c) + // Secondary device attribute response (Request was: ^[[>0c or ^[[>c) if (getMode(MODE_Ansi)) sendString("\033[>0;115;0c"); // Why 115? ;) else @@ -830,96 +872,137 @@ void Vt102Emulation::reportSecondaryAttributes() // konsoles backward compatibility. } +/* DECREPTPARM – Report Terminal Parameters + ESC [ ; ; ; ; ; ; x + + http://vt100.net/docs/vt100-ug/chapter3.html +*/ void Vt102Emulation::reportTerminalParms(int p) -// DECREPTPARM -{ +{ char tmp[100]; - sprintf(tmp,"\033[%d;1;1;112;112;1;0x",p); // not really true. +/* + sol=1: This message is a request; report in response to a request. + par=1: No parity set + nbits=1: 8 bits per character + xspeed=112: 9600 + rspeed=112: 9600 + clkmul=1: The bit rate multiplier is 16. + flags=0: None +*/ + snprintf(tmp, sizeof(tmp), "\033[%d;1;1;112;112;1;0x", p); // not really true. sendString(tmp); } void Vt102Emulation::reportStatus() { - sendString("\033[0n"); //VT100. Device status report. 0 = Ready. + sendString("\033[0n"); //VT100. Device status report. 0 = Ready. } void Vt102Emulation::reportAnswerBack() { - // FIXME - Test this with VTTEST - // This is really obsolete VT100 stuff. - const char* ANSWER_BACK = ""; - sendString(ANSWER_BACK); + // FIXME - Test this with VTTEST + // This is really obsolete VT100 stuff. + const char* ANSWER_BACK = ""; + sendString(ANSWER_BACK); } /*! `cx',`cy' are 1-based. - `eventType' indicates the button pressed (0-2) - or a general mouse release (3). + `cb' indicates the button pressed or released (0-2) or scroll event (4-5). eventType represents the kind of mouse action that occurred: - 0 = Mouse button press or release + 0 = Mouse button press 1 = Mouse drag + 2 = Mouse button release */ -void Vt102Emulation::sendMouseEvent( int cb, int cx, int cy , int eventType ) +void Vt102Emulation::sendMouseEvent(int cb, int cx, int cy , int eventType) { - if (cx < 1 || cy < 1) - return; + if (cx < 1 || cy < 1) + return; - // normal buttons are passed as 0x20 + button, - // mouse wheel (buttons 4,5) as 0x5c + button - if (cb >= 4) - cb += 0x3c; + // With the exception of the 1006 mode, button release is encoded in cb. + // Note that if multiple extensions are enabled, the 1006 is used, so it's okay to check for only that. + if (eventType == 2 && !getMode(MODE_Mouse1006)) + cb = 3; - //Mouse motion handling - if ((getMode(MODE_Mouse1002) || getMode(MODE_Mouse1003)) && eventType == 1) - cb += 0x20; //add 32 to signify motion event + // normal buttons are passed as 0x20 + button, + // mouse wheel (buttons 4,5) as 0x5c + button + if (cb >= 4) + cb += 0x3c; - char command[20]; - sprintf(command,"\033[M%c%c%c",cb+0x20,cx+0x20,cy+0x20); - sendString(command); + //Mouse motion handling + if ((getMode(MODE_Mouse1002) || getMode(MODE_Mouse1003)) && eventType == 1) + cb += 0x20; //add 32 to signify motion event + + char command[32]; + command[0] = '\0'; + // Check the extensions in decreasing order of preference. Encoding the release event above assumes that 1006 comes first. + if (getMode(MODE_Mouse1006)) { + snprintf(command, sizeof(command), "\033[<%d;%d;%d%c", cb, cx, cy, eventType == 2 ? 'm' : 'M'); + } else if (getMode(MODE_Mouse1015)) { + snprintf(command, sizeof(command), "\033[%d;%d;%dM", cb + 0x20, cx, cy); + } else if (getMode(MODE_Mouse1005)) { + if (cx <= 2015 && cy <= 2015) { + // The xterm extension uses UTF-8 (up to 2 bytes) to encode + // coordinate+32, no matter what the locale is. We could easily + // convert manually, but QString can also do it for us. + QChar coords[2]; + coords[0] = cx + 0x20; + coords[1] = cy + 0x20; + QString coordsStr = QString(coords, 2); + QByteArray utf8 = coordsStr.toUtf8(); + snprintf(command, sizeof(command), "\033[M%c%s", cb + 0x20, (const char *)utf8); + } + } else if (cx <= 223 && cy <= 223) { + snprintf(command, sizeof(command), "\033[M%c%c%c", cb + 0x20, cx + 0x20, cy + 0x20); + } + + sendString(command); } -void Vt102Emulation::sendText( const QString& text ) +void Vt102Emulation::sendText(const QString& text) { - if (!text.isEmpty()) - { - QKeyEvent event(QEvent::KeyPress, - 0, - Qt::NoModifier, - text); - sendKeyEvent(&event); // expose as a big fat keypress event - } + if (!text.isEmpty()) { + QKeyEvent event(QEvent::KeyPress, + 0, + Qt::NoModifier, + text); + sendKeyEvent(&event); // expose as a big fat keypress event + } } -void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) +void Vt102Emulation::sendKeyEvent(QKeyEvent* event) { - Qt::KeyboardModifiers modifiers = event->modifiers(); + const Qt::KeyboardModifiers modifiers = event->modifiers(); KeyboardTranslator::States states = KeyboardTranslator::NoState; // get current states - if (getMode(MODE_NewLine) ) states |= KeyboardTranslator::NewLineState; - if (getMode(MODE_Ansi) ) states |= KeyboardTranslator::AnsiState; + if (getMode(MODE_NewLine)) states |= KeyboardTranslator::NewLineState; + if (getMode(MODE_Ansi)) states |= KeyboardTranslator::AnsiState; if (getMode(MODE_AppCuKeys)) states |= KeyboardTranslator::CursorKeysState; if (getMode(MODE_AppScreen)) states |= KeyboardTranslator::AlternateScreenState; - if (getMode(MODE_AppKeyPad) && (modifiers & Qt::KeypadModifier)) + if (getMode(MODE_AppKeyPad) && (modifiers & Qt::KeypadModifier)) states |= KeyboardTranslator::ApplicationKeypadState; // check flow control state - if (modifiers & Qt::ControlModifier) - { - if (event->key() == Qt::Key_S) + if (modifiers & Qt::ControlModifier) { + switch (event->key()) { + case Qt::Key_S: emit flowControlKeyPressed(true); - else if (event->key() == Qt::Key_Q) + break; + case Qt::Key_Q: + case Qt::Key_C: // cancel flow control emit flowControlKeyPressed(false); + break; + } } - // lookup key binding - if ( _keyTranslator ) - { - KeyboardTranslator::Entry entry = _keyTranslator->findEntry( - event->key() , - modifiers, - states ); + // look up key binding + if (_keyTranslator) { + KeyboardTranslator::Entry entry = _keyTranslator->findEntry( + event->key() , + modifiers, + states); // send result to terminal QByteArray textToSend; @@ -928,22 +1011,28 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) // Alt+[Character] results in Esc+[Character] being sent // (unless there is an entry defined for this particular combination // in the keyboard modifier) - bool wantsAltModifier = entry.modifiers() & entry.modifierMask() & Qt::AltModifier; - bool wantsAnyModifier = entry.state() & + const bool wantsAltModifier = entry.modifiers() & entry.modifierMask() & Qt::AltModifier; + const bool wantsMetaModifier = entry.modifiers() & entry.modifierMask() & Qt::MetaModifier; + const bool wantsAnyModifier = entry.state() & entry.stateMask() & KeyboardTranslator::AnyModifierState; - if ( modifiers & Qt::AltModifier && !(wantsAltModifier || wantsAnyModifier) + if ( modifiers & Qt::AltModifier && !(wantsAltModifier || wantsAnyModifier) && !event->text().isEmpty() ) { textToSend.prepend("\033"); } + if ( modifiers & Qt::MetaModifier && !(wantsMetaModifier || wantsAnyModifier) + && !event->text().isEmpty() ) + { + textToSend.prepend("\030@s"); + } if ( entry.command() != KeyboardTranslator::NoCommand ) { - KTerminalDisplay* currentView = _currentScreen->currentTerminalDisplay(); - if (entry.command() & KeyboardTranslator::EraseCommand) + KTerminalDisplay * currentView = _currentScreen->currentTerminalDisplay(); + if (entry.command() & KeyboardTranslator::EraseCommand) { textToSend += eraseChar(); - else if (entry.command() & KeyboardTranslator::ScrollPageUpCommand) + } else if (entry.command() & KeyboardTranslator::ScrollPageUpCommand) currentView->scrollScreenWindow(ScreenWindow::ScrollPages, -1); else if (entry.command() & KeyboardTranslator::ScrollPageDownCommand) currentView->scrollScreenWindow(ScreenWindow::ScrollPages, 1); @@ -951,28 +1040,31 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) currentView->scrollScreenWindow(ScreenWindow::ScrollLines, -1); else if (entry.command() & KeyboardTranslator::ScrollLineDownCommand) currentView->scrollScreenWindow(ScreenWindow::ScrollLines, 1); - - // TODO command handling +// else if (entry.command() & KeyboardTranslator::ScrollUpToTopCommand) +// currentView->scrollScreenWindow(ScreenWindow::ScrollLines, +// - currentView->screenWindow()->currentLine()); +// else if (entry.command() & KeyboardTranslator::ScrollDownToBottomCommand) +// currentView->scrollScreenWindow(ScreenWindow::ScrollLines, lineCount()); } - else if ( !entry.text().isEmpty() ) + else if (!entry.text().isEmpty()) { textToSend += _codec->fromUnicode(entry.text(true,modifiers)); } else textToSend += _codec->fromUnicode(event->text()); - sendData( textToSend.constData() , textToSend.length() ); + sendData(textToSend.constData(), textToSend.length()); } else { // print an error message to the terminal if no key translator has been // set - QString translatorError = tr("No keyboard translator available. " - "The information needed to convert key presses " - "into characters to send to the terminal " - "is missing."); +// QString translatorError = i18n("No keyboard translator available. " +// "The information needed to convert key presses " +// "into characters to send to the terminal " +// "is missing."); reset(); - receiveData( translatorError.toLatin1().constData() , translatorError.count() ); +// receiveData(translatorError.toAscii().constData(), translatorError.count()); } } @@ -984,7 +1076,7 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) // Character Set Conversion ------------------------------------------------ -- -/* +/* The processing contains a VT100 specific code translation layer. It's still in use and mainly responsible for the line drawing graphics. @@ -995,7 +1087,7 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) in the pipeline. It only applies to tokens, which represent plain characters. - This conversion it eventually continued in TerminalDisplay.C, since + This conversion it eventually continued in TerminalDisplay.C, since it might involve VT100 enhanced fonts, which have these particular glyphs allocated in (0x00-0x1f) in their code page. */ @@ -1006,9 +1098,9 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) unsigned short Vt102Emulation::applyCharset(unsigned short c) { - if (CHARSET.graphic && 0x5f <= c && c <= 0x7e) return vt100_graphics[c-0x5f]; - if (CHARSET.pound && c == '#' ) return 0xa3; //This mode is obsolete - return c; + if (CHARSET.graphic && 0x5f <= c && c <= 0x7e) return vt100_graphics[c - 0x5f]; + if (CHARSET.pound && c == '#') return 0xa3; //This mode is obsolete + return c; } /* @@ -1021,31 +1113,31 @@ unsigned short Vt102Emulation::applyCharset(unsigned short c) void Vt102Emulation::resetCharset(int scrno) { - _charset[scrno].cu_cs = 0; - strncpy(_charset[scrno].charset,"BBBB",4); - _charset[scrno].sa_graphic = false; - _charset[scrno].sa_pound = false; - _charset[scrno].graphic = false; - _charset[scrno].pound = false; + _charset[scrno].cu_cs = 0; + qstrncpy(_charset[scrno].charset, "BBBB", 4); + _charset[scrno].sa_graphic = false; + _charset[scrno].sa_pound = false; + _charset[scrno].graphic = false; + _charset[scrno].pound = false; } void Vt102Emulation::setCharset(int n, int cs) // on both screens. { - _charset[0].charset[n&3] = cs; useCharset(_charset[0].cu_cs); - _charset[1].charset[n&3] = cs; useCharset(_charset[1].cu_cs); + _charset[0].charset[n & 3] = cs; useCharset(_charset[0].cu_cs); + _charset[1].charset[n & 3] = cs; useCharset(_charset[1].cu_cs); } void Vt102Emulation::setAndUseCharset(int n, int cs) { - CHARSET.charset[n&3] = cs; - useCharset(n&3); + CHARSET.charset[n & 3] = cs; + useCharset(n & 3); } void Vt102Emulation::useCharset(int n) { - CHARSET.cu_cs = n&3; - CHARSET.graphic = (CHARSET.charset[n&3] == '0'); - CHARSET.pound = (CHARSET.charset[n&3] == 'A'); //This mode is obsolete + CHARSET.cu_cs = n & 3; + CHARSET.graphic = (CHARSET.charset[n & 3] == '0'); + CHARSET.pound = (CHARSET.charset[n & 3] == 'A'); //This mode is obsolete } void Vt102Emulation::setDefaultMargins() @@ -1056,25 +1148,25 @@ void Vt102Emulation::setDefaultMargins() void Vt102Emulation::setMargins(int t, int b) { - _screen[0]->setMargins(t, b); - _screen[1]->setMargins(t, b); + _screen[0]->setMargins(t, b); + _screen[1]->setMargins(t, b); } void Vt102Emulation::saveCursor() { - CHARSET.sa_graphic = CHARSET.graphic; - CHARSET.sa_pound = CHARSET.pound; //This mode is obsolete - // we are not clear about these - //sa_charset = charsets[cScreen->_charset]; - //sa_charset_num = cScreen->_charset; - _currentScreen->saveCursor(); + CHARSET.sa_graphic = CHARSET.graphic; + CHARSET.sa_pound = CHARSET.pound; //This mode is obsolete + // we are not clear about these + //sa_charset = charsets[cScreen->_charset]; + //sa_charset_num = cScreen->_charset; + _currentScreen->saveCursor(); } void Vt102Emulation::restoreCursor() { - CHARSET.graphic = CHARSET.sa_graphic; - CHARSET.pound = CHARSET.sa_pound; //This mode is obsolete - _currentScreen->restoreCursor(); + CHARSET.graphic = CHARSET.sa_graphic; + CHARSET.pound = CHARSET.sa_pound; //This mode is obsolete + _currentScreen->restoreCursor(); } /* ------------------------------------------------------------------------- */ @@ -1099,27 +1191,30 @@ void Vt102Emulation::restoreCursor() void Vt102Emulation::resetModes() { - // MODE_Allow132Columns is not reset here - // to match Xterm's behaviour (see Xterm's VTReset() function) + // MODE_Allow132Columns is not reset here + // to match Xterm's behavior (see Xterm's VTReset() function) - resetMode(MODE_132Columns); saveMode(MODE_132Columns); - resetMode(MODE_Mouse1000); saveMode(MODE_Mouse1000); - resetMode(MODE_Mouse1001); saveMode(MODE_Mouse1001); - resetMode(MODE_Mouse1002); saveMode(MODE_Mouse1002); - resetMode(MODE_Mouse1003); saveMode(MODE_Mouse1003); + resetMode(MODE_132Columns); saveMode(MODE_132Columns); + resetMode(MODE_Mouse1000); saveMode(MODE_Mouse1000); + resetMode(MODE_Mouse1001); saveMode(MODE_Mouse1001); + resetMode(MODE_Mouse1002); saveMode(MODE_Mouse1002); + resetMode(MODE_Mouse1003); saveMode(MODE_Mouse1003); + resetMode(MODE_Mouse1005); saveMode(MODE_Mouse1005); + resetMode(MODE_Mouse1006); saveMode(MODE_Mouse1006); + resetMode(MODE_Mouse1015); saveMode(MODE_Mouse1015); + resetMode(MODE_BracketedPaste); saveMode(MODE_BracketedPaste); - resetMode(MODE_AppScreen); saveMode(MODE_AppScreen); - resetMode(MODE_AppCuKeys); saveMode(MODE_AppCuKeys); - resetMode(MODE_AppKeyPad); saveMode(MODE_AppKeyPad); - resetMode(MODE_NewLine); - setMode(MODE_Ansi); + resetMode(MODE_AppScreen); saveMode(MODE_AppScreen); + resetMode(MODE_AppCuKeys); saveMode(MODE_AppCuKeys); + resetMode(MODE_AppKeyPad); saveMode(MODE_AppKeyPad); + resetMode(MODE_NewLine); + setMode(MODE_Ansi); } void Vt102Emulation::setMode(int m) { - _currentModes.mode[m] = true; - switch (m) - { + _currentModes.mode[m] = true; + switch (m) { case MODE_132Columns: if (getMode(MODE_Allow132Columns)) clearScreenAndSetColumns(132); @@ -1130,101 +1225,135 @@ void Vt102Emulation::setMode(int m) case MODE_Mouse1001: case MODE_Mouse1002: case MODE_Mouse1003: - emit programUsesMouseChanged(false); - break; + emit programUsesMouseChanged(false); + break; - case MODE_AppScreen : _screen[1]->clearSelection(); - setScreen(1); - break; - } - if (m < MODES_SCREEN || m == MODE_NewLine) - { - _screen[0]->setMode(m); - _screen[1]->setMode(m); - } + case MODE_BracketedPaste: + //emit programBracketedPasteModeChanged(true); + break; + + case MODE_AppScreen : + _screen[1]->clearSelection(); + setScreen(1); + break; + } + // FIXME: Currently this has a redundant condition as MODES_SCREEN is 6 + // and MODE_NewLine is 5 + if (m < MODES_SCREEN || m == MODE_NewLine) { + _screen[0]->setMode(m); + _screen[1]->setMode(m); + } } void Vt102Emulation::resetMode(int m) { - _currentModes.mode[m] = false; - switch (m) - { + _currentModes.mode[m] = false; + switch (m) { case MODE_132Columns: if (getMode(MODE_Allow132Columns)) clearScreenAndSetColumns(80); break; - case MODE_Mouse1000 : + case MODE_Mouse1000 : case MODE_Mouse1001 : case MODE_Mouse1002 : case MODE_Mouse1003 : - emit programUsesMouseChanged(true); - break; + emit programUsesMouseChanged(true); + break; - case MODE_AppScreen : + case MODE_BracketedPaste: + //emit programBracketedPasteModeChanged(false); + break; + + case MODE_AppScreen : _screen[0]->clearSelection(); setScreen(0); - break; - } - if (m < MODES_SCREEN || m == MODE_NewLine) - { - _screen[0]->resetMode(m); - _screen[1]->resetMode(m); - } + break; + } + // FIXME: Currently this has a redundant condition as MODES_SCREEN is 6 + // and MODE_NewLine is 5 + if (m < MODES_SCREEN || m == MODE_NewLine) { + _screen[0]->resetMode(m); + _screen[1]->resetMode(m); + } } void Vt102Emulation::saveMode(int m) { - _savedModes.mode[m] = _currentModes.mode[m]; + _savedModes.mode[m] = _currentModes.mode[m]; } void Vt102Emulation::restoreMode(int m) { - if (_savedModes.mode[m]) - setMode(m); - else - resetMode(m); + if (_savedModes.mode[m]) + setMode(m); + else + resetMode(m); } bool Vt102Emulation::getMode(int m) { - return _currentModes.mode[m]; + return _currentModes.mode[m]; } char Vt102Emulation::eraseChar() const { - KeyboardTranslator::Entry entry = _keyTranslator->findEntry( - Qt::Key_Backspace, - 0, - 0); - if ( entry.text().count() > 0 ) - return entry.text()[0]; - else - return '\b'; + KeyboardTranslator::Entry entry = _keyTranslator->findEntry( + Qt::Key_Backspace, + 0, + 0); + if (entry.text().count() > 0) + return entry.text()[0]; + else + return '\b'; } +#if 0 // print contents of the scan buffer static void hexdump(int* s, int len) -{ int i; - for (i = 0; i < len; i++) - { - if (s[i] == '\\') - printf("\\\\"); - else - if ((s[i]) > 32 && s[i] < 127) - printf("%c",s[i]); - else - printf("\\%04x(hex)",s[i]); - } +{ + int i; + for (i = 0; i < len; i++) { + if (s[i] == '\\') + printf("\\\\"); + else if ((s[i]) > 32 && s[i] < 127) + printf("%c", s[i]); + else + printf("\\%04x(hex)", s[i]); + } +} +#endif + +// return contents of the scan buffer +static QString hexdump2(int* s, int len) +{ + int i; + char dump[128]; + QString returnDump; + + for (i = 0; i < len; i++) { + if (s[i] == '\\') + snprintf(dump, sizeof(dump), "%s", "\\\\"); + else if ((s[i]) > 32 && s[i] < 127) + snprintf(dump, sizeof(dump), "%c", s[i]); + else + snprintf(dump, sizeof(dump), "\\%04x(hex)", s[i]); + returnDump.append(QString(dump)); + } + return returnDump; } void Vt102Emulation::reportDecodingError() { - if (tokenBufferPos == 0 || ( tokenBufferPos == 1 && (tokenBuffer[0] & 0xff) >= 32) ) - return; - printf("Undecodable sequence: "); - hexdump(tokenBuffer,tokenBufferPos); - printf("\n"); + if (tokenBufferPos == 0 || (tokenBufferPos == 1 && (tokenBuffer[0] & 0xff) >= 32)) + return; + +// printf("Undecodable sequence: "); +// hexdump(tokenBuffer, tokenBufferPos); +// printf("\n"); + + QString outputError = QString("Undecodable sequence: "); + outputError.append(hexdump2(tokenBuffer, tokenBufferPos)); + //kDebug() << outputError; } //#include "Vt102Emulation.moc" - diff --git a/konsole-qml-plugin/src/Vt102Emulation.h b/konsole-qml-plugin/src/Vt102Emulation.h index 9dc6f6e..070672f 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.h +++ b/konsole-qml-plugin/src/Vt102Emulation.h @@ -1,6 +1,6 @@ /* This file is part of Konsole, an X terminal. - + Copyright 2007-2008 by Robert Knight Copyright 1997,1998 by Lars Doelle @@ -23,168 +23,169 @@ #ifndef VT102EMULATION_H #define VT102EMULATION_H -// Standard Library -#include -// Qt -#include +// Qt #include -#include // Konsole #include "Emulation.h" #include "Screen.h" -#include "ScreenWindow.h" -#include "TerminalDisplay.h" + +class QTimer; +class QKeyEvent; #define MODE_AppScreen (MODES_SCREEN+0) // Mode #1 #define MODE_AppCuKeys (MODES_SCREEN+1) // Application cursor keys (DECCKM) -#define MODE_AppKeyPad (MODES_SCREEN+2) // +#define MODE_AppKeyPad (MODES_SCREEN+2) // #define MODE_Mouse1000 (MODES_SCREEN+3) // Send mouse X,Y position on press and release #define MODE_Mouse1001 (MODES_SCREEN+4) // Use Hilight mouse tracking #define MODE_Mouse1002 (MODES_SCREEN+5) // Use cell motion mouse tracking -#define MODE_Mouse1003 (MODES_SCREEN+6) // Use all motion mouse tracking -#define MODE_Ansi (MODES_SCREEN+7) // Use US Ascii for character sets G0-G3 (DECANM) -#define MODE_132Columns (MODES_SCREEN+8) // 80 <-> 132 column mode switch (DECCOLM) -#define MODE_Allow132Columns (MODES_SCREEN+9) // Allow DECCOLM mode -#define MODE_total (MODES_SCREEN+10) +#define MODE_Mouse1003 (MODES_SCREEN+6) // Use all motion mouse tracking +#define MODE_Mouse1005 (MODES_SCREEN+7) // Xterm-style extended coordinates +#define MODE_Mouse1006 (MODES_SCREEN+8) // 2nd Xterm-style extended coordinates +#define MODE_Mouse1015 (MODES_SCREEN+9) // Urxvt-style extended coordinates +#define MODE_Ansi (MODES_SCREEN+10) // Use US Ascii for character sets G0-G3 (DECANM) +#define MODE_132Columns (MODES_SCREEN+11) // 80 <-> 132 column mode switch (DECCOLM) +#define MODE_Allow132Columns (MODES_SCREEN+12) // Allow DECCOLM mode +#define MODE_BracketedPaste (MODES_SCREEN+13) // Xterm-style bracketed paste mode +#define MODE_total (MODES_SCREEN+14) - -struct CharCodes +namespace Konsole { - // coding info - char charset[4]; // - int cu_cs; // actual charset. - bool graphic; // Some VT100 tricks - bool pound ; // Some VT100 tricks - bool sa_graphic; // saved graphic - bool sa_pound; // saved pound +extern unsigned short vt100_graphics[32]; + +struct CharCodes { + // coding info + char charset[4]; // + int cu_cs; // actual charset. + bool graphic; // Some VT100 tricks + bool pound; // Some VT100 tricks + bool sa_graphic; // saved graphic + bool sa_pound; // saved pound }; /** * Provides an xterm compatible terminal emulation based on the DEC VT102 terminal. * A full description of this terminal can be found at http://vt100.net/docs/vt102-ug/ - * - * In addition, various additional xterm escape sequences are supported to provide + * + * In addition, various additional xterm escape sequences are supported to provide * features such as mouse input handling. * See http://rtfm.etla.org/xterm/ctlseq.html for a description of xterm's escape - * sequences. + * sequences. * */ class Vt102Emulation : public Emulation -{ -Q_OBJECT +{ + Q_OBJECT public: - /** Constructs a new emulation */ - Vt102Emulation(); - ~Vt102Emulation(); - - // reimplemented from Emulation - virtual void clearEntireScreen(); - virtual void reset(); - virtual char eraseChar() const; - -public slots: - // reimplemented from Emulation - virtual void sendString(const char*,int length = -1); - virtual void sendText(const QString& text); - virtual void sendKeyEvent(QKeyEvent*); - virtual void sendMouseEvent(int buttons, int column, int line, int eventType); - + /** Constructs a new emulation */ + Vt102Emulation(); + ~Vt102Emulation(); + + // reimplemented from Emulation + virtual void clearEntireScreen(); + virtual void reset(); + virtual char eraseChar() const; + +public slots: + // reimplemented from Emulation + virtual void sendString(const char*, int length = -1); + virtual void sendText(const QString& text); + virtual void sendKeyEvent(QKeyEvent*); + virtual void sendMouseEvent(int buttons, int column, int line, int eventType); + protected: - // reimplemented from Emulation - virtual void setMode(int mode); - virtual void resetMode(int mode); - virtual void receiveChar(int cc); - + // reimplemented from Emulation + virtual void setMode(int mode); + virtual void resetMode(int mode); + virtual void receiveChar(int cc); + private slots: - //causes changeTitle() to be emitted for each (int,QString) pair in pendingTitleUpdates - //used to buffer multiple title updates - void updateTitle(); + //causes changeTitle() to be emitted for each (int,QString) pair in pendingTitleUpdates + //used to buffer multiple title updates + void updateTitle(); private: - unsigned short applyCharset(unsigned short c); - void setCharset(int n, int cs); - void useCharset(int n); - void setAndUseCharset(int n, int cs); - void saveCursor(); - void restoreCursor(); - void resetCharset(int scrno); + unsigned short applyCharset(unsigned short c); + void setCharset(int n, int cs); + void useCharset(int n); + void setAndUseCharset(int n, int cs); + void saveCursor(); + void restoreCursor(); + void resetCharset(int scrno); - void setMargins(int top, int bottom); - //set margins for all screens back to their defaults - void setDefaultMargins(); + void setMargins(int top, int bottom); + //set margins for all screens back to their defaults + void setDefaultMargins(); - // returns true if 'mode' is set or false otherwise - bool getMode (int mode); - // saves the current boolean value of 'mode' - void saveMode (int mode); - // restores the boolean value of 'mode' - void restoreMode(int mode); - // resets all modes - // (except MODE_Allow132Columns) - void resetModes(); + // returns true if 'mode' is set or false otherwise + bool getMode(int mode); + // saves the current boolean value of 'mode' + void saveMode(int mode); + // restores the boolean value of 'mode' + void restoreMode(int mode); + // resets all modes + // (except MODE_Allow132Columns) + void resetModes(); - void resetTokenizer(); - #define MAX_TOKEN_LENGTH 80 - void addToCurrentToken(int cc); - int tokenBuffer[MAX_TOKEN_LENGTH]; //FIXME: overflow? - int tokenBufferPos; + void resetTokenizer(); +#define MAX_TOKEN_LENGTH 256 // Max length of tokens (e.g. window title) + void addToCurrentToken(int cc); + int tokenBuffer[MAX_TOKEN_LENGTH]; //FIXME: overflow? + int tokenBufferPos; #define MAXARGS 15 - void addDigit(int dig); - void addArgument(); - int argv[MAXARGS]; - int argc; - void initTokenizer(); + void addDigit(int dig); + void addArgument(); + int argv[MAXARGS]; + int argc; + void initTokenizer(); - // Set of flags for each of the ASCII characters which indicates - // what category they fall into (printable character, control, digit etc.) - // for the purposes of decoding terminal output - int charClass[256]; + // Set of flags for each of the ASCII characters which indicates + // what category they fall into (printable character, control, digit etc.) + // for the purposes of decoding terminal output + int charClass[256]; - void reportDecodingError(); + void reportDecodingError(); - void processToken(int code, int p, int q); - void processWindowAttributeChange(); + void processToken(int code, int p, int q); + void processWindowAttributeChange(); - void reportTerminalType(); - void reportSecondaryAttributes(); - void reportStatus(); - void reportAnswerBack(); - void reportCursorPosition(); - void reportTerminalParms(int p); + void reportTerminalType(); + void reportSecondaryAttributes(); + void reportStatus(); + void reportAnswerBack(); + void reportCursorPosition(); + void reportTerminalParms(int p); - void onScrollLock(); - void scrollLock(const bool lock); + // clears the screen and resizes it to the specified + // number of columns + void clearScreenAndSetColumns(int columnCount); - // clears the screen and resizes it to the specified - // number of columns - void clearScreenAndSetColumns(int columnCount); + CharCodes _charset[2]; - CharCodes _charset[2]; + class TerminalState + { + public: + // Initializes all modes to false + TerminalState() { + memset(&mode, false, MODE_total * sizeof(bool)); + } - class TerminalState - { - public: - // Initializes all modes to false - TerminalState() - { memset(&mode,false,MODE_total * sizeof(bool)); } + bool mode[MODE_total]; + }; - bool mode[MODE_total]; - }; + TerminalState _currentModes; + TerminalState _savedModes; - TerminalState _currentModes; - TerminalState _savedModes; - - //hash table and timer for buffering calls to the session instance - //to update the name of the session - //or window title. - //these calls occur when certain escape sequences are seen in the - //output from the terminal - QHash _pendingTitleUpdates; - QTimer* _titleUpdateTimer; + //hash table and timer for buffering calls to the session instance + //to update the name of the session + //or window title. + //these calls occur when certain escape sequences are seen in the + //output from the terminal + QHash _pendingTitleUpdates; + QTimer* _titleUpdateTimer; }; - +} #endif // VT102EMULATION_H -- 2.47.2 From 3eb836fd81ec40b32ddd311bdf16dd1f278db0b5 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 22:55:52 +0200 Subject: [PATCH 055/477] Allow applications to notify the terminal they use mouse. --- konsole-qml-plugin/src/Session.cpp | 11 +++-------- konsole-qml-plugin/src/TerminalDisplay.cpp | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/konsole-qml-plugin/src/Session.cpp b/konsole-qml-plugin/src/Session.cpp index 1e499ea..5eee57f 100644 --- a/konsole-qml-plugin/src/Session.cpp +++ b/konsole-qml-plugin/src/Session.cpp @@ -200,14 +200,9 @@ void Session::addView(KTerminalDisplay * widget) // allow emulation to notify view when the foreground process // indicates whether or not it is interested in mouse signals - - // TODO Disabled since at the moment it is not working properly. - // Remember to reenable that once it' is's working. - - //connect( _emulation , SIGNAL(programUsesMouseChanged(bool)) , widget , - // SLOT(setUsesMouse(bool)) ); - - //widget->setUsesMouse( _emulation->programUsesMouse() ); + connect( _emulation , SIGNAL(programUsesMouseChanged(bool)) , widget , + SLOT(setUsesMouse(bool)) ); + widget->setUsesMouse( _emulation->programUsesMouse() ); widget->setScreenWindow(_emulation->createWindow()); } diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 1c36399..35ad208 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -992,7 +992,7 @@ void KTerminalDisplay::scrollScreenWindow(enum ScreenWindow::RelativeScrollMode void KTerminalDisplay::setUsesMouse(bool usesMouse){ - _mouseMarks = !usesMouse; + _mouseMarks = usesMouse; } void KTerminalDisplay::setAutoFocus(bool au) -- 2.47.2 From 95dce399b52a1cd85c555468d6a1891af3473d5c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 23:14:57 +0200 Subject: [PATCH 056/477] Mouse use is now exposed to QML. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 5 +++++ konsole-qml-plugin/src/TerminalDisplay.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 35ad208..a320901 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -993,6 +993,11 @@ void KTerminalDisplay::scrollScreenWindow(enum ScreenWindow::RelativeScrollMode void KTerminalDisplay::setUsesMouse(bool usesMouse){ _mouseMarks = usesMouse; + emit usesMouseChanged(); +} + +bool KTerminalDisplay::getUsesMouse(){ + return !_mouseMarks; } void KTerminalDisplay::setAutoFocus(bool au) diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index d7b41d6..cdf3d8d 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -70,6 +70,7 @@ class KONSOLEPRIVATE_EXPORT KTerminalDisplay : public QQuickPaintedItem Q_PROPERTY(bool ShowIMEOnClick READ autoVKB WRITE setAutoVKB NOTIFY changedAutoVKB) Q_PROPERTY(QSize terminalSize READ getTerminalSize NOTIFY terminalSizeChanged) Q_PROPERTY(QSize paintedFontSize READ getFontSize NOTIFY paintedFontSizeChanged) + Q_PROPERTY(bool usesMouse READ getUsesMouse NOTIFY usesMouseChanged) public: @@ -316,6 +317,7 @@ public slots: void scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount); void setUsesMouse(bool usesMouse); + bool getUsesMouse(void); bool autoFocus() { return m_focusOnClick; } void setAutoFocus(bool au); @@ -421,6 +423,8 @@ signals: void mouseSignal(int,int,int,int); + void usesMouseChanged(); + void terminalSizeChanged(); void paintedFontSizeChanged(); -- 2.47.2 From 8313b2a2fde5df352dd5b2b5c60d235cd9c3725a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 23:42:45 +0200 Subject: [PATCH 057/477] Fix mouse wheel behavior. --- app/PreprocessedTerminal.qml | 4 ++-- konsole-qml-plugin/src/TerminalDisplay.cpp | 21 ++++++++++----------- konsole-qml-plugin/src/TerminalDisplay.h | 3 +-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 8e27c17..77c9472 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -134,8 +134,8 @@ Item{ anchors.fill: parent onWheel:{ var coord = correctDistortion(wheel.x, wheel.y); - var lines = wheel.angleDelta.y > 0 ? -2 : 2; - kterminal.scrollWheel(coord.width, coord.height, lines); + var lines = wheel.angleDelta.y > 0 ? -1 : 1; + kterminal.scrollWheelEvent(coord, lines); } //onClicked: { // if (mouse.button == Qt.RightButton){ diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index a320901..9fb7279 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -447,28 +447,27 @@ QStringList KTerminalDisplay::availableColorSchemes() return ret; } -void KTerminalDisplay::scrollWheel(qreal x, qreal y, int lines){ +void KTerminalDisplay::scrollWheelEvent(QPoint position, int lines){ if(_mouseMarks){ - int charLine; - int charColumn; - getCharacterPosition(QPoint(x,y) , charLine , charColumn); - - emit mouseSignal(lines > 0 ? 5 : 4, - charColumn + 1, - charLine + 1, - 0); - } else { if(_screenWindow->lineCount() == _screenWindow->windowLines()){ const int keyCode = lines > 0 ? Qt::Key_Down : Qt::Key_Up; QKeyEvent keyEvent(QEvent::KeyPress, keyCode, Qt::NoModifier); emit keyPressedSignal(&keyEvent); - emit keyPressedSignal(&keyEvent); } else { _screenWindow->scrollBy( ScreenWindow::ScrollLines, lines ); _screenWindow->scrollCount(); updateImage(); } + } else { + int charLine; + int charColumn; + getCharacterPosition(position, charLine, charColumn); + + emit mouseSignal(lines > 0 ? 5 : 4, + charColumn + 1, + charLine + 1, + 0); } } diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index cdf3d8d..2084b41 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -312,8 +312,6 @@ public slots: void setColorScheme(const QString &name); QStringList availableColorSchemes(); - void scrollWheel(qreal x, qreal y, int lines); - void scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount); void setUsesMouse(bool usesMouse); @@ -481,6 +479,7 @@ protected: Q_INVOKABLE void mouseReleaseEvent(QPoint position, int but, int mod); Q_INVOKABLE void mouseDoubleClickEvent(QPoint position, int but, int mod); Q_INVOKABLE void mouseMoveEvent(QPoint position, int but, int buts, int mod); + Q_INVOKABLE void scrollWheelEvent(QPoint position, int lines); //void mouseReleaseEvent( QMouseEvent* ); //void mouseMoveEvent( QMouseEvent* ); -- 2.47.2 From f0aa9c423b5d58973c5f6a3c22da1d888c68fb0d Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 27 Aug 2014 23:59:21 +0200 Subject: [PATCH 058/477] Fixed double click behavior. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 9fb7279..0d7e857 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -866,10 +866,10 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; // Yes, successive middle click can trigger this event - if (button == Qt::MidButton) { - processMidButtonClick(position, modifiers); - return; - } +// if (button == Qt::MidButton) { +// processMidButtonClick(position, modifiers); +// return; +// } if (button != Qt::LeftButton) return; if (!_screenWindow) return; @@ -881,11 +881,7 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) // pass on double click as two clicks. if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) { - // Send just _ONE_ click event, since the first click of the double click - // was already sent by the click handler - emit mouseSignal(0, charColumn + 1, - charLine + 1, - 0); + // There is no need to pass other events. /*emit mouseSignal(0, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum(), 0); */ // left button @@ -906,6 +902,7 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) _screenWindow->setSelectionEnd(endSel.x() , endSel.y()); copyToX11Selection(); + //TODO implement triple click. // _possibleTripleClick = true; // QTimer::singleShot(QApplication::doubleClickInterval(), this, -- 2.47.2 From bde7ed901c48e04a829c409a98051e8bce9439c0 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 28 Aug 2014 00:43:50 +0200 Subject: [PATCH 059/477] Context menu play nicely with application that needs mouse control. Enabling Ctrl+Wheel to control scaling. --- app/PreprocessedTerminal.qml | 32 +++++++++------------- konsole-qml-plugin/src/TerminalDisplay.cpp | 4 +-- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/PreprocessedTerminal.qml b/app/PreprocessedTerminal.qml index 77c9472..7a876bc 100644 --- a/app/PreprocessedTerminal.qml +++ b/app/PreprocessedTerminal.qml @@ -133,31 +133,25 @@ Item{ acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton anchors.fill: parent onWheel:{ - var coord = correctDistortion(wheel.x, wheel.y); - var lines = wheel.angleDelta.y > 0 ? -1 : 1; - kterminal.scrollWheelEvent(coord, lines); + if(wheel.modifiers & Qt.ControlModifier){ + wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger(); + } else { + var coord = correctDistortion(wheel.x, wheel.y); + var lines = wheel.angleDelta.y > 0 ? -1 : 1; + kterminal.scrollWheelEvent(coord, lines); + } } - //onClicked: { - // if (mouse.button == Qt.RightButton){ - // contextmenu.popup(); - // } else if (mouse.button == Qt.MiddleButton){ - // kterminal.pasteSelection(); - // } - //} onDoubleClicked: { var coord = correctDistortion(mouse.x, mouse.y); - console.log("Double click"); kterminal.mouseDoubleClickEvent(coord, mouse.button, mouse.modifiers); } - //onPositionChanged: { - // if (pressedButtons & Qt.LeftButton){ - // var coord = correctDistortion(mouse.x, mouse.y); - // kterminal.mouseMove(coord.width, coord.height); - // } - //} onPressed: { - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mousePressEvent(coord, mouse.button, mouse.modifiers) + if((!kterminal.usesMouse || mouse.modifiers & Qt.ShiftModifier) && mouse.button == Qt.RightButton) { + contextmenu.popup(); + } else { + var coord = correctDistortion(mouse.x, mouse.y); + kterminal.mousePressEvent(coord, mouse.button, mouse.modifiers) + } } onReleased: { var coord = correctDistortion(mouse.x, mouse.y); diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 0d7e857..1b28e56 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -614,9 +614,7 @@ void KTerminalDisplay::mousePressEvent(QPoint position, int but, int mod) } else if (button == Qt::MidButton) { processMidButtonClick(position, modifiers); } else if (button == Qt::RightButton) { - if (_mouseMarks || (modifiers & Qt::ShiftModifier)) - ;//emit configureRequest(ev->pos()); - else + if (!_mouseMarks) emit mouseSignal(2, charColumn + 1, charLine + 1, 0); //emit mouseSignal(2, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); } -- 2.47.2 From 6a8cdbab4cd8a8f775022a37f096453b8e78fb93 Mon Sep 17 00:00:00 2001 From: Boris Egorov Date: Sat, 30 Aug 2014 01:20:47 +0700 Subject: [PATCH 060/477] Fix initialization oreder in TerminalDisplay Data members need to be initialized in the order they were declared in the class definition. This commit fixes compiler warnings. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 642a1f8..994ab68 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -124,6 +124,10 @@ const QChar LTR_OVERRIDE_CHAR( 0x202D ); /* ------------------------------------------------------------------------- */ KTerminalDisplay::KTerminalDisplay(QQuickItem *parent) : QQuickPaintedItem(parent) + ,m_session(0) + ,m_focusOnClick(true) + ,m_showVKBonClick(true) + ,m_parent(parent) ,_screenWindow(0) ,_allowBell(true) ,_fontHeight(1) @@ -159,10 +163,6 @@ KTerminalDisplay::KTerminalDisplay(QQuickItem *parent) : ,_colorsInverted(false) ,_cursorShape(BlockCursor) ,_mouseMarks(false) - ,m_session(0) - ,m_focusOnClick(true) - ,m_showVKBonClick(true) - ,m_parent(parent) { _blendColor = qRgba(0,0,0,0xff); m_widgetRect = QRectF(0,0,1,1); -- 2.47.2 From d81c1200241c7090013bb93d6521ada983850ea1 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Fri, 29 Aug 2014 23:31:37 +0200 Subject: [PATCH 061/477] Fix specfile serious bug: qmlscene not installed To run cool-old-term Qt5's qmlscene binary is required. The specfile, however, did not have QtDeclarative-devel as requirement specified. I also made some adjustments to the BuildRequirements as "pkgconfig" is the recommended cross-distro way, hopefully enabling building cool-old-term under Mageia 5. --- packaging/rpm/cool-old-term.spec | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packaging/rpm/cool-old-term.spec b/packaging/rpm/cool-old-term.spec index 6d66575..92af768 100644 --- a/packaging/rpm/cool-old-term.spec +++ b/packaging/rpm/cool-old-term.spec @@ -28,34 +28,38 @@ Group: System/X11/Terminals License: GPLv3 URL: https://github.com/Swordifish90/cool-old-term -# For this spec file to work, the cool-old-term sources must be located in a directory -# named cool-old-term-0.9 (with "0.9" being the version number defined above). -# If the sources are compressed in another format than ZIP, change the +# For this spec file to work, the cool-old-term sources must be located +# in a directory named cool-old-term-0.9 (with "0.9" being the version +# number defined above). +# If the sources are compressed in another format than tar.xz, change the # file extension accordingly. -Source0: %{name}-%{version}.zip +Source0: %{name}-%{version}.tar.xz + +BuildRequires: pkgconfig(Qt5Core) +BuildRequires: pkgconfig(Qt5Declarative) +BuildRequires: pkgconfig(Qt5Gui) +BuildRequires: pkgconfig(Qt5Quick) # Package names only verified with Fedora and openSUSE. # Should the packages in your distro be named dirrerently, # see http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto +# +# QtDeclarative-devel required for "qmlscene" binary %if 0%{?fedora} -BuildRequires: qt5-qtbase-devel -BuildRequires: qt5-qtdeclarative-devel -BuildRequires: unzip Requires: qt5-qtbase Requires: qt5-qtbase-gui Requires: qt5-qtdeclarative +Requires: qt5-qtdeclarative-devel Requires: qt5-qtgraphicaleffects Requires: qt5-qtquickcontrols %endif %if 0%{?suse_version} -BuildRequires: libqt5-qtbase-devel -BuildRequires: libqt5-qtdeclarative-devel -BuildRequires: unzip Requires: libqt5-qtquickcontrols Requires: libqt5-qtbase Requires: libQt5Gui5 Requires: libqt5-qtdeclarative +Requires: libqt5-qtdeclarative-devel Requires: libqt5-qtgraphicaleffects %endif -- 2.47.2 From 2ecff6276ca35b7b2cca94ca8884925f0ffc26b6 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 30 Aug 2014 01:22:39 +0200 Subject: [PATCH 062/477] Removed unuseful comments from TerminalDisplay.cpp --- konsole-qml-plugin/src/TerminalDisplay.cpp | 211 +++------------------ 1 file changed, 28 insertions(+), 183 deletions(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 1b28e56..875776f 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -479,18 +479,6 @@ void KTerminalDisplay::doPaste(QString text, bool appendReturn) if (appendReturn) text.append("\r"); -// if (text.length() > 8000) { -// if (KMessageBox::warningContinueCancel(window(), -// i18np("Are you sure you want to paste %1 character?", -// "Are you sure you want to paste %1 characters?", -// text.length()), -// i18n("Confirm Paste"), -// KStandardGuiItem::cont(), -// KStandardGuiItem::cancel(), -// "ShowPasteHugeTextWarning") == KMessageBox::Cancel) -// return; -// } - if (!text.isEmpty()) { text.replace('\n', '\r'); // if (bracketedPasteMode()) { @@ -549,8 +537,6 @@ void KTerminalDisplay::mousePressEvent(QPoint position, int but, int mod) // return; // } - //if (!contentsRect().contains(ev->pos())) return; - if (!_screenWindow) return; int charLine; @@ -559,64 +545,31 @@ void KTerminalDisplay::mousePressEvent(QPoint position, int but, int mod) QPoint pos = QPoint(charColumn, charLine); if (button == Qt::LeftButton) { - // request the software keyboard, if any -// if (qApp->autoSipEnabled()) { -// QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel( -// style()->styleHint(QStyle::SH_RequestSoftwareInputPanel)); -// if (hasFocus() || behavior == QStyle::RSIP_OnMouseClick) { -// QEvent event(QEvent::RequestSoftwareInputPanel); -// QApplication::sendEvent(this, &event); -// } -// } - _lineSelectionMode = false; _wordSelectionMode = false; - // The user clicked inside selected text - //bool selected = _screenWindow->isSelected(pos.x(), pos.y()); + _preserveLineBreaks = !((modifiers & Qt::ControlModifier) && !(modifiers & Qt::AltModifier)); + _columnSelectionMode = (modifiers & Qt::AltModifier) && (modifiers & Qt::ControlModifier); - // Drag only when the Control key is held -// if ((!_ctrlRequiredForDrag || ev->modifiers() & Qt::ControlModifier) && selected) { -// _dragInfo.state = diPending; -// _dragInfo.start = ev->pos(); -// } else { - // No reason to ever start a drag event - //_dragInfo.state = diNone; - - _preserveLineBreaks = !((modifiers & Qt::ControlModifier) && !(modifiers & Qt::AltModifier)); - _columnSelectionMode = (modifiers & Qt::AltModifier) && (modifiers & Qt::ControlModifier); - - if (_mouseMarks || (modifiers == Qt::ShiftModifier)) { - // Only extend selection for programs not interested in mouse - if (_mouseMarks && (modifiers == Qt::ShiftModifier)) { - extendSelection(position); - } else { - _screenWindow->clearSelection(); - - //pos.ry() += _scrollBar->value(); - _iPntSel = _pntSel = pos; - _actSel = 1; // left mouse button pressed but nothing selected yet. - } + if (_mouseMarks || (modifiers == Qt::ShiftModifier)) { + // Only extend selection for programs not interested in mouse + if (_mouseMarks && (modifiers == Qt::ShiftModifier)) { + extendSelection(position); } else { - emit mouseSignal(0, charColumn + 1, charLine + 1, 0); - //emit mouseSignal(0, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); + _screenWindow->clearSelection(); + + //pos.ry() += _scrollBar->value(); + _iPntSel = _pntSel = pos; + _actSel = 1; // left mouse button pressed but nothing selected yet. } - -// if (_underlineLinks && (_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier))) { -// Filter::HotSpot* spot = _filterChain->hotSpotAt(charLine, charColumn); -// if (spot && spot->type() == Filter::HotSpot::Link) { -// QObject action; -// action.setObjectName("open-action"); -// spot->activate(&action); -// } -// } - + } else { + emit mouseSignal(0, charColumn + 1, charLine + 1, 0); + } } else if (button == Qt::MidButton) { processMidButtonClick(position, modifiers); } else if (button == Qt::RightButton) { if (!_mouseMarks) emit mouseSignal(2, charColumn + 1, charLine + 1, 0); - //emit mouseSignal(2, charColumn + 1, charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 0); } } @@ -630,54 +583,6 @@ void KTerminalDisplay::mouseMoveEvent(QPoint position, int but, int buts, int mo int charColumn = 0; getCharacterPosition(position, charLine, charColumn); - // handle filters - // change link hot-spot appearance on mouse-over -// Filter::HotSpot* spot = _filterChain->hotSpotAt(charLine, charColumn); -// if (spot && spot->type() == Filter::HotSpot::Link) { -// if (_underlineLinks) { -// QRegion previousHotspotArea = _mouseOverHotspotArea; -// _mouseOverHotspotArea = QRegion(); -// QRect r; -// if (spot->startLine() == spot->endLine()) { -// r.setCoords(spot->startColumn()*_fontWidth + _contentRect.left(), -// spot->startLine()*_fontHeight + _contentRect.top(), -// (spot->endColumn())*_fontWidth + _contentRect.left() - 1, -// (spot->endLine() + 1)*_fontHeight + _contentRect.top() - 1); -// _mouseOverHotspotArea |= r; -// } else { -// r.setCoords(spot->startColumn()*_fontWidth + _contentRect.left(), -// spot->startLine()*_fontHeight + _contentRect.top(), -// (_columns)*_fontWidth + _contentRect.left() - 1, -// (spot->startLine() + 1)*_fontHeight + _contentRect.top() - 1); -// _mouseOverHotspotArea |= r; -// for (int line = spot->startLine() + 1 ; line < spot->endLine() ; line++) { -// r.setCoords(0 * _fontWidth + _contentRect.left(), -// line * _fontHeight + _contentRect.top(), -// (_columns)*_fontWidth + _contentRect.left() - 1, -// (line + 1)*_fontHeight + _contentRect.top() - 1); -// _mouseOverHotspotArea |= r; -// } -// r.setCoords(0 * _fontWidth + _contentRect.left(), -// spot->endLine()*_fontHeight + _contentRect.top(), -// (spot->endColumn())*_fontWidth + _contentRect.left() - 1, -// (spot->endLine() + 1)*_fontHeight + _contentRect.top() - 1); -// _mouseOverHotspotArea |= r; -// } - -// if ((_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier)) && (cursor().shape() != Qt::PointingHandCursor)) -// setCursor(Qt::PointingHandCursor); - -// update(_mouseOverHotspotArea | previousHotspotArea); -// } -// } else if (!_mouseOverHotspotArea.isEmpty()) { -// if ((_underlineLinks && (_openLinksByDirectClick || (ev->modifiers() & Qt::ControlModifier))) || (cursor().shape() == Qt::PointingHandCursor)) -// setCursor(_mouseMarks ? Qt::IBeamCursor : Qt::ArrowCursor); - -// update(_mouseOverHotspotArea); -// // set hotspot area to an invalid rectangle -// _mouseOverHotspotArea = QRegion(); -// } - // for auto-hiding the cursor, we need mouseTracking if (buttons == Qt::NoButton) return; @@ -693,40 +598,13 @@ void KTerminalDisplay::mouseMoveEvent(QPoint position, int but, int buts, int mo if (buttons & Qt::RightButton) button = 2; - emit mouseSignal(button, - charColumn + 1, - charLine + 1, - 1); -// emit mouseSignal(button, -// charColumn + 1, -// charLine + 1 + _scrollBar->value() - _scrollBar->maximum(), -// 1); - + emit mouseSignal(button, charColumn + 1, charLine + 1, 1); return; } -// if (_dragInfo.state == diPending) { -// // we had a mouse down, but haven't confirmed a drag yet -// // if the mouse has moved sufficiently, we will confirm - -// const int distance = KGlobalSettings::dndEventDelay(); -// if (ev->x() > _dragInfo.start.x() + distance || ev->x() < _dragInfo.start.x() - distance || -// ev->y() > _dragInfo.start.y() + distance || ev->y() < _dragInfo.start.y() - distance) { -// // we've left the drag square, we can start a real drag operation now - -// _screenWindow->clearSelection(); -// doDrag(); -// } -// return; -// } else if (_dragInfo.state == diDragging) { -// // this isn't technically needed because mouseMoveEvent is suppressed during -// // Qt drag operations, replaced by dragMoveEvent -// return; -// } - if (_actSel == 0) return; -// don't extend selection while pasting + // don't extend selection while pasting if (buttons & Qt::MidButton) return; extendSelection(position); @@ -863,12 +741,6 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) Qt::MouseButton button = (Qt::MouseButton) but; Qt::KeyboardModifier modifiers = (Qt::KeyboardModifier) mod; - // Yes, successive middle click can trigger this event -// if (button == Qt::MidButton) { -// processMidButtonClick(position, modifiers); -// return; -// } - if (button != Qt::LeftButton) return; if (!_screenWindow) return; @@ -877,14 +749,9 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) getCharacterPosition(position, charLine, charColumn); - // pass on double click as two clicks. - if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) { - // There is no need to pass other events. - /*emit mouseSignal(0, charColumn + 1, - charLine + 1 + _scrollBar->value() - _scrollBar->maximum(), - 0); */ // left button + // If the application is interested in mouse events. They have already been forwarded. + if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) return; - } _screenWindow->clearSelection(); @@ -894,7 +761,6 @@ void KTerminalDisplay::mouseDoubleClickEvent(QPoint position, int but, int mod) _iPntSel = QPoint(charColumn, charLine); const QPoint bgnSel = findWordStart(_iPntSel); const QPoint endSel = findWordEnd(_iPntSel); - //_iPntSel.ry() += _scrollBar->value(); _screenWindow->setSelectionStart(bgnSel.x() , bgnSel.y() , false); _screenWindow->setSelectionEnd(endSel.x() , endSel.y()); @@ -918,9 +784,6 @@ void KTerminalDisplay::copyToX11Selection() return; QGuiApplication::clipboard()->setText(text, QClipboard::Selection); - -// if (_autoCopySelectedText) -// QApplication::clipboard()->setText(text, QClipboard::Clipboard); } @@ -937,42 +800,24 @@ void KTerminalDisplay::mouseReleaseEvent(QPoint position, int but, int mod) getCharacterPosition(position, charLine, charColumn); if (button == Qt::LeftButton) { -// if (_dragInfo.state == diPending) { - // We had a drag event pending but never confirmed. Kill selection -// _screenWindow->clearSelection(); -// } else { - if (_actSel > 1) { - copyToX11Selection(); - } + if (_actSel > 1) { + copyToX11Selection(); + } - _actSel = 0; + _actSel = 0; - //FIXME: emits a release event even if the mouse is - // outside the range. The procedure used in `mouseMoveEvent' - // applies here, too. + //FIXME: emits a release event even if the mouse is + // outside the range. The procedure used in `mouseMoveEvent' + // applies here, too. - if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) - emit mouseSignal(0, - charColumn + 1, - charLine + 1 , 2); -// emit mouseSignal(0, -// charColumn + 1, -// charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , 2); -// } -// _dragInfo.state = diNone; + if (!_mouseMarks && !(modifiers & Qt::ShiftModifier)) + emit mouseSignal(0, charColumn + 1, charLine + 1 , 2); } if (!_mouseMarks && (button == Qt::RightButton || button == Qt::MidButton) && !(modifiers & Qt::ShiftModifier)) { - emit mouseSignal(button == Qt::MidButton ? 1 : 2, - charColumn + 1, - charLine + 1, - 2); -// emit mouseSignal(ev->button() == Qt::MidButton ? 1 : 2, -// charColumn + 1, -// charLine + 1 + _scrollBar->value() - _scrollBar->maximum() , -// 2); + emit mouseSignal(button == Qt::MidButton ? 1 : 2, charColumn + 1, charLine + 1, 2); } } -- 2.47.2 From 5e07c989194d34d86b710d52f9234cc64570d663 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 2 Sep 2014 18:10:04 +0200 Subject: [PATCH 063/477] Refactoring of build system and use of native executable instead of qmlscene. --- .gitignore | 4 ++ app/app.pro | 8 +++ app/main.cpp | 27 +++++++ app/{ => qml}/AboutDialog.qml | 0 app/{ => qml}/ApplicationSettings.qml | 0 app/{ => qml}/CheckableSlider.qml | 0 app/{ => qml}/ColorButton.qml | 0 app/{ => qml}/FontPixels.qml | 0 app/{ => qml}/FontScanlines.qml | 0 app/{ => qml}/Fonts.qml | 0 app/{ => qml}/Glossy.qml | 0 app/{ => qml}/InsertNameDialog.qml | 0 app/{ => qml}/PreprocessedTerminal.qml | 0 app/{ => qml}/SettingsEffectsTab.qml | 0 app/{ => qml}/SettingsGeneralTab.qml | 0 app/{ => qml}/SettingsTerminalTab.qml | 0 app/{ => qml}/SettingsWindow.qml | 0 app/{ => qml}/ShaderTerminal.qml | 0 app/{ => qml}/SimpleSlider.qml | 0 app/{ => qml}/SizeOverlay.qml | 0 app/{ => qml}/Storage.qml | 0 app/{ => qml}/TimeManager.qml | 0 .../fonts/1971-ibm-3278/3270Medium.ttf | Bin app/{ => qml}/fonts/1971-ibm-3278/LICENSE.txt | 0 app/{ => qml}/fonts/1971-ibm-3278/README.md | 0 .../fonts/1977-apple2/FreeLicense.txt | 0 app/{ => qml}/fonts/1977-apple2/PRNumber3.ttf | Bin .../fonts/1977-apple2/PrintChar21.ttf | Bin .../1977-commodore-pet/COMMODORE_PET.ttf | Bin .../1977-commodore-pet/COMMODORE_PET_128.ttf | Bin .../COMMODORE_PET_128_2y.ttf | Bin .../1977-commodore-pet/COMMODORE_PET_2x.ttf | Bin .../1977-commodore-pet/COMMODORE_PET_2y.ttf | Bin .../1977-commodore-pet/COMMODORE_PET_64.ttf | Bin .../COMMODORE_PET_64_2y.ttf | Bin .../fonts/1977-commodore-pet/FreeLicense.txt | 0 .../ATARI400800_original.TTF | Bin .../ATARI400800_rounded.TTF | Bin .../ATARI400800_squared.TTF | Bin .../fonts/1979-atari-400-800/ReadMe.rtf | 0 .../C64_Elite_Mono_v1.0-STYLE.ttf | Bin .../C64_Pro_Mono_v1.0-STYLE.ttf | Bin .../1982-commodore64/C64_Pro_v1.0-STYLE.ttf | Bin .../C64_User_Mono_v1.0-STYLE.ttf | Bin .../1982-commodore64/C64_User_v1.0-STYLE.ttf | Bin .../fonts/1982-commodore64/license.txt | 0 .../1985-atari-st/AtariST8x16SystemFont.ttf | Bin .../Perfect DOS VGA 437 Win.ttf | Bin .../1985-ibm-pc-vga/Perfect DOS VGA 437.ttf | Bin .../fonts/1985-ibm-pc-vga/dos437.txt | 0 .../modern-terminus/TerminusTTF-4.38.2.ttf | Bin .../TerminusTTF-Bold-4.38.2.ttf | Bin app/{ => qml}/frames/BlackRoughFrame.qml | 0 app/{ => qml}/frames/NoFrame.qml | 0 app/{ => qml}/frames/WhiteSimpleFrame.qml | 0 .../frames/images/black-frame-normals.png | Bin .../frames/images/black-frame-original.png | Bin app/{ => qml}/frames/images/black-frame.png | Bin app/{ => qml}/frames/images/randfunction.png | Bin .../frames/images/screen-frame-normals.png | Bin .../frames/images/screen-frame-original.png | Bin app/{ => qml}/frames/images/screen-frame.png | Bin app/{ => qml}/frames/utils/FrameShader.qml | 0 app/{ => qml}/frames/utils/NoFrameShader.qml | 0 app/{ => qml}/frames/utils/TerminalFrame.qml | 0 app/{ => qml}/main.qml | 2 + app/qml/resources.qrc | 68 ++++++++++++++++++ cool-old-term | 4 -- cool-old-term.pro | 8 +-- konsole-qml-plugin/debian/changelog | 29 -------- konsole-qml-plugin/debian/compat | 1 - konsole-qml-plugin/debian/control | 40 ----------- konsole-qml-plugin/debian/copyright | 50 ------------- konsole-qml-plugin/debian/rules | 21 ------ konsole-qml-plugin/debian/source/format | 1 - konsole-qml-plugin/konsole-qml-plugin.pro | 24 ++++++- 76 files changed, 136 insertions(+), 151 deletions(-) create mode 100644 app/app.pro create mode 100644 app/main.cpp rename app/{ => qml}/AboutDialog.qml (100%) rename app/{ => qml}/ApplicationSettings.qml (100%) rename app/{ => qml}/CheckableSlider.qml (100%) rename app/{ => qml}/ColorButton.qml (100%) rename app/{ => qml}/FontPixels.qml (100%) rename app/{ => qml}/FontScanlines.qml (100%) rename app/{ => qml}/Fonts.qml (100%) rename app/{ => qml}/Glossy.qml (100%) rename app/{ => qml}/InsertNameDialog.qml (100%) rename app/{ => qml}/PreprocessedTerminal.qml (100%) rename app/{ => qml}/SettingsEffectsTab.qml (100%) rename app/{ => qml}/SettingsGeneralTab.qml (100%) rename app/{ => qml}/SettingsTerminalTab.qml (100%) rename app/{ => qml}/SettingsWindow.qml (100%) rename app/{ => qml}/ShaderTerminal.qml (100%) rename app/{ => qml}/SimpleSlider.qml (100%) rename app/{ => qml}/SizeOverlay.qml (100%) rename app/{ => qml}/Storage.qml (100%) rename app/{ => qml}/TimeManager.qml (100%) rename app/{ => qml}/fonts/1971-ibm-3278/3270Medium.ttf (100%) rename app/{ => qml}/fonts/1971-ibm-3278/LICENSE.txt (100%) rename app/{ => qml}/fonts/1971-ibm-3278/README.md (100%) rename app/{ => qml}/fonts/1977-apple2/FreeLicense.txt (100%) rename app/{ => qml}/fonts/1977-apple2/PRNumber3.ttf (100%) rename app/{ => qml}/fonts/1977-apple2/PrintChar21.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_128.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_64.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf (100%) rename app/{ => qml}/fonts/1977-commodore-pet/FreeLicense.txt (100%) rename app/{ => qml}/fonts/1979-atari-400-800/ATARI400800_original.TTF (100%) rename app/{ => qml}/fonts/1979-atari-400-800/ATARI400800_rounded.TTF (100%) rename app/{ => qml}/fonts/1979-atari-400-800/ATARI400800_squared.TTF (100%) rename app/{ => qml}/fonts/1979-atari-400-800/ReadMe.rtf (100%) rename app/{ => qml}/fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf (100%) rename app/{ => qml}/fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf (100%) rename app/{ => qml}/fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf (100%) rename app/{ => qml}/fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf (100%) rename app/{ => qml}/fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf (100%) rename app/{ => qml}/fonts/1982-commodore64/license.txt (100%) rename app/{ => qml}/fonts/1985-atari-st/AtariST8x16SystemFont.ttf (100%) rename app/{ => qml}/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf (100%) rename app/{ => qml}/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf (100%) rename app/{ => qml}/fonts/1985-ibm-pc-vga/dos437.txt (100%) rename app/{ => qml}/fonts/modern-terminus/TerminusTTF-4.38.2.ttf (100%) rename app/{ => qml}/fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf (100%) rename app/{ => qml}/frames/BlackRoughFrame.qml (100%) rename app/{ => qml}/frames/NoFrame.qml (100%) rename app/{ => qml}/frames/WhiteSimpleFrame.qml (100%) rename app/{ => qml}/frames/images/black-frame-normals.png (100%) rename app/{ => qml}/frames/images/black-frame-original.png (100%) rename app/{ => qml}/frames/images/black-frame.png (100%) rename app/{ => qml}/frames/images/randfunction.png (100%) rename app/{ => qml}/frames/images/screen-frame-normals.png (100%) rename app/{ => qml}/frames/images/screen-frame-original.png (100%) rename app/{ => qml}/frames/images/screen-frame.png (100%) rename app/{ => qml}/frames/utils/FrameShader.qml (100%) rename app/{ => qml}/frames/utils/NoFrameShader.qml (100%) rename app/{ => qml}/frames/utils/TerminalFrame.qml (100%) rename app/{ => qml}/main.qml (99%) create mode 100644 app/qml/resources.qrc delete mode 100755 cool-old-term delete mode 100644 konsole-qml-plugin/debian/changelog delete mode 100644 konsole-qml-plugin/debian/compat delete mode 100644 konsole-qml-plugin/debian/control delete mode 100644 konsole-qml-plugin/debian/copyright delete mode 100755 konsole-qml-plugin/debian/rules delete mode 100644 konsole-qml-plugin/debian/source/format diff --git a/.gitignore b/.gitignore index 365d6ec..8204296 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,7 @@ Makefile* # Others *.xcf + +# Ubuntu SDk +*.excludes +*.json diff --git a/app/app.pro b/app/app.pro new file mode 100644 index 0000000..2a72f3a --- /dev/null +++ b/app/app.pro @@ -0,0 +1,8 @@ +QT += qml quick widgets +TARGET = cool-old-term + +DESTDIR = $$OUT_PWD/../ +SOURCES = main.cpp + +RESOURCES += qml/resources.qrc + diff --git a/app/main.cpp b/app/main.cpp new file mode 100644 index 0000000..259b64f --- /dev/null +++ b/app/main.cpp @@ -0,0 +1,27 @@ +#include +#include + +#include + +#include +#include + + +int main(int argc, char *argv[]) +{ + setenv("QT_QPA_PLATFORMTHEME", "", 1); + QApplication app(argc, argv); + QQmlApplicationEngine engine; + + // Managing some env variables + + // Manage import paths + QStringList importPathList = engine.importPathList(); + importPathList.prepend(QCoreApplication::applicationDirPath() + "/imports/"); + engine.setImportPathList(importPathList); + + engine.load(QUrl("qrc:/main.qml")); + + return app.exec(); +} + diff --git a/app/AboutDialog.qml b/app/qml/AboutDialog.qml similarity index 100% rename from app/AboutDialog.qml rename to app/qml/AboutDialog.qml diff --git a/app/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml similarity index 100% rename from app/ApplicationSettings.qml rename to app/qml/ApplicationSettings.qml diff --git a/app/CheckableSlider.qml b/app/qml/CheckableSlider.qml similarity index 100% rename from app/CheckableSlider.qml rename to app/qml/CheckableSlider.qml diff --git a/app/ColorButton.qml b/app/qml/ColorButton.qml similarity index 100% rename from app/ColorButton.qml rename to app/qml/ColorButton.qml diff --git a/app/FontPixels.qml b/app/qml/FontPixels.qml similarity index 100% rename from app/FontPixels.qml rename to app/qml/FontPixels.qml diff --git a/app/FontScanlines.qml b/app/qml/FontScanlines.qml similarity index 100% rename from app/FontScanlines.qml rename to app/qml/FontScanlines.qml diff --git a/app/Fonts.qml b/app/qml/Fonts.qml similarity index 100% rename from app/Fonts.qml rename to app/qml/Fonts.qml diff --git a/app/Glossy.qml b/app/qml/Glossy.qml similarity index 100% rename from app/Glossy.qml rename to app/qml/Glossy.qml diff --git a/app/InsertNameDialog.qml b/app/qml/InsertNameDialog.qml similarity index 100% rename from app/InsertNameDialog.qml rename to app/qml/InsertNameDialog.qml diff --git a/app/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml similarity index 100% rename from app/PreprocessedTerminal.qml rename to app/qml/PreprocessedTerminal.qml diff --git a/app/SettingsEffectsTab.qml b/app/qml/SettingsEffectsTab.qml similarity index 100% rename from app/SettingsEffectsTab.qml rename to app/qml/SettingsEffectsTab.qml diff --git a/app/SettingsGeneralTab.qml b/app/qml/SettingsGeneralTab.qml similarity index 100% rename from app/SettingsGeneralTab.qml rename to app/qml/SettingsGeneralTab.qml diff --git a/app/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml similarity index 100% rename from app/SettingsTerminalTab.qml rename to app/qml/SettingsTerminalTab.qml diff --git a/app/SettingsWindow.qml b/app/qml/SettingsWindow.qml similarity index 100% rename from app/SettingsWindow.qml rename to app/qml/SettingsWindow.qml diff --git a/app/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml similarity index 100% rename from app/ShaderTerminal.qml rename to app/qml/ShaderTerminal.qml diff --git a/app/SimpleSlider.qml b/app/qml/SimpleSlider.qml similarity index 100% rename from app/SimpleSlider.qml rename to app/qml/SimpleSlider.qml diff --git a/app/SizeOverlay.qml b/app/qml/SizeOverlay.qml similarity index 100% rename from app/SizeOverlay.qml rename to app/qml/SizeOverlay.qml diff --git a/app/Storage.qml b/app/qml/Storage.qml similarity index 100% rename from app/Storage.qml rename to app/qml/Storage.qml diff --git a/app/TimeManager.qml b/app/qml/TimeManager.qml similarity index 100% rename from app/TimeManager.qml rename to app/qml/TimeManager.qml diff --git a/app/fonts/1971-ibm-3278/3270Medium.ttf b/app/qml/fonts/1971-ibm-3278/3270Medium.ttf similarity index 100% rename from app/fonts/1971-ibm-3278/3270Medium.ttf rename to app/qml/fonts/1971-ibm-3278/3270Medium.ttf diff --git a/app/fonts/1971-ibm-3278/LICENSE.txt b/app/qml/fonts/1971-ibm-3278/LICENSE.txt similarity index 100% rename from app/fonts/1971-ibm-3278/LICENSE.txt rename to app/qml/fonts/1971-ibm-3278/LICENSE.txt diff --git a/app/fonts/1971-ibm-3278/README.md b/app/qml/fonts/1971-ibm-3278/README.md similarity index 100% rename from app/fonts/1971-ibm-3278/README.md rename to app/qml/fonts/1971-ibm-3278/README.md diff --git a/app/fonts/1977-apple2/FreeLicense.txt b/app/qml/fonts/1977-apple2/FreeLicense.txt similarity index 100% rename from app/fonts/1977-apple2/FreeLicense.txt rename to app/qml/fonts/1977-apple2/FreeLicense.txt diff --git a/app/fonts/1977-apple2/PRNumber3.ttf b/app/qml/fonts/1977-apple2/PRNumber3.ttf similarity index 100% rename from app/fonts/1977-apple2/PRNumber3.ttf rename to app/qml/fonts/1977-apple2/PRNumber3.ttf diff --git a/app/fonts/1977-apple2/PrintChar21.ttf b/app/qml/fonts/1977-apple2/PrintChar21.ttf similarity index 100% rename from app/fonts/1977-apple2/PrintChar21.ttf rename to app/qml/fonts/1977-apple2/PrintChar21.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_128.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_128.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_128.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_128.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_64.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_64.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_64.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_64.ttf diff --git a/app/fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf b/app/qml/fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf similarity index 100% rename from app/fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf rename to app/qml/fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf diff --git a/app/fonts/1977-commodore-pet/FreeLicense.txt b/app/qml/fonts/1977-commodore-pet/FreeLicense.txt similarity index 100% rename from app/fonts/1977-commodore-pet/FreeLicense.txt rename to app/qml/fonts/1977-commodore-pet/FreeLicense.txt diff --git a/app/fonts/1979-atari-400-800/ATARI400800_original.TTF b/app/qml/fonts/1979-atari-400-800/ATARI400800_original.TTF similarity index 100% rename from app/fonts/1979-atari-400-800/ATARI400800_original.TTF rename to app/qml/fonts/1979-atari-400-800/ATARI400800_original.TTF diff --git a/app/fonts/1979-atari-400-800/ATARI400800_rounded.TTF b/app/qml/fonts/1979-atari-400-800/ATARI400800_rounded.TTF similarity index 100% rename from app/fonts/1979-atari-400-800/ATARI400800_rounded.TTF rename to app/qml/fonts/1979-atari-400-800/ATARI400800_rounded.TTF diff --git a/app/fonts/1979-atari-400-800/ATARI400800_squared.TTF b/app/qml/fonts/1979-atari-400-800/ATARI400800_squared.TTF similarity index 100% rename from app/fonts/1979-atari-400-800/ATARI400800_squared.TTF rename to app/qml/fonts/1979-atari-400-800/ATARI400800_squared.TTF diff --git a/app/fonts/1979-atari-400-800/ReadMe.rtf b/app/qml/fonts/1979-atari-400-800/ReadMe.rtf similarity index 100% rename from app/fonts/1979-atari-400-800/ReadMe.rtf rename to app/qml/fonts/1979-atari-400-800/ReadMe.rtf diff --git a/app/fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf b/app/qml/fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf similarity index 100% rename from app/fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf rename to app/qml/fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf diff --git a/app/fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf b/app/qml/fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf similarity index 100% rename from app/fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf rename to app/qml/fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf diff --git a/app/fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf b/app/qml/fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf similarity index 100% rename from app/fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf rename to app/qml/fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf diff --git a/app/fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf b/app/qml/fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf similarity index 100% rename from app/fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf rename to app/qml/fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf diff --git a/app/fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf b/app/qml/fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf similarity index 100% rename from app/fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf rename to app/qml/fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf diff --git a/app/fonts/1982-commodore64/license.txt b/app/qml/fonts/1982-commodore64/license.txt similarity index 100% rename from app/fonts/1982-commodore64/license.txt rename to app/qml/fonts/1982-commodore64/license.txt diff --git a/app/fonts/1985-atari-st/AtariST8x16SystemFont.ttf b/app/qml/fonts/1985-atari-st/AtariST8x16SystemFont.ttf similarity index 100% rename from app/fonts/1985-atari-st/AtariST8x16SystemFont.ttf rename to app/qml/fonts/1985-atari-st/AtariST8x16SystemFont.ttf diff --git a/app/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf b/app/qml/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf similarity index 100% rename from app/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf rename to app/qml/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf diff --git a/app/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf b/app/qml/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf similarity index 100% rename from app/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf rename to app/qml/fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf diff --git a/app/fonts/1985-ibm-pc-vga/dos437.txt b/app/qml/fonts/1985-ibm-pc-vga/dos437.txt similarity index 100% rename from app/fonts/1985-ibm-pc-vga/dos437.txt rename to app/qml/fonts/1985-ibm-pc-vga/dos437.txt diff --git a/app/fonts/modern-terminus/TerminusTTF-4.38.2.ttf b/app/qml/fonts/modern-terminus/TerminusTTF-4.38.2.ttf similarity index 100% rename from app/fonts/modern-terminus/TerminusTTF-4.38.2.ttf rename to app/qml/fonts/modern-terminus/TerminusTTF-4.38.2.ttf diff --git a/app/fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf b/app/qml/fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf similarity index 100% rename from app/fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf rename to app/qml/fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf diff --git a/app/frames/BlackRoughFrame.qml b/app/qml/frames/BlackRoughFrame.qml similarity index 100% rename from app/frames/BlackRoughFrame.qml rename to app/qml/frames/BlackRoughFrame.qml diff --git a/app/frames/NoFrame.qml b/app/qml/frames/NoFrame.qml similarity index 100% rename from app/frames/NoFrame.qml rename to app/qml/frames/NoFrame.qml diff --git a/app/frames/WhiteSimpleFrame.qml b/app/qml/frames/WhiteSimpleFrame.qml similarity index 100% rename from app/frames/WhiteSimpleFrame.qml rename to app/qml/frames/WhiteSimpleFrame.qml diff --git a/app/frames/images/black-frame-normals.png b/app/qml/frames/images/black-frame-normals.png similarity index 100% rename from app/frames/images/black-frame-normals.png rename to app/qml/frames/images/black-frame-normals.png diff --git a/app/frames/images/black-frame-original.png b/app/qml/frames/images/black-frame-original.png similarity index 100% rename from app/frames/images/black-frame-original.png rename to app/qml/frames/images/black-frame-original.png diff --git a/app/frames/images/black-frame.png b/app/qml/frames/images/black-frame.png similarity index 100% rename from app/frames/images/black-frame.png rename to app/qml/frames/images/black-frame.png diff --git a/app/frames/images/randfunction.png b/app/qml/frames/images/randfunction.png similarity index 100% rename from app/frames/images/randfunction.png rename to app/qml/frames/images/randfunction.png diff --git a/app/frames/images/screen-frame-normals.png b/app/qml/frames/images/screen-frame-normals.png similarity index 100% rename from app/frames/images/screen-frame-normals.png rename to app/qml/frames/images/screen-frame-normals.png diff --git a/app/frames/images/screen-frame-original.png b/app/qml/frames/images/screen-frame-original.png similarity index 100% rename from app/frames/images/screen-frame-original.png rename to app/qml/frames/images/screen-frame-original.png diff --git a/app/frames/images/screen-frame.png b/app/qml/frames/images/screen-frame.png similarity index 100% rename from app/frames/images/screen-frame.png rename to app/qml/frames/images/screen-frame.png diff --git a/app/frames/utils/FrameShader.qml b/app/qml/frames/utils/FrameShader.qml similarity index 100% rename from app/frames/utils/FrameShader.qml rename to app/qml/frames/utils/FrameShader.qml diff --git a/app/frames/utils/NoFrameShader.qml b/app/qml/frames/utils/NoFrameShader.qml similarity index 100% rename from app/frames/utils/NoFrameShader.qml rename to app/qml/frames/utils/NoFrameShader.qml diff --git a/app/frames/utils/TerminalFrame.qml b/app/qml/frames/utils/TerminalFrame.qml similarity index 100% rename from app/frames/utils/TerminalFrame.qml rename to app/qml/frames/utils/TerminalFrame.qml diff --git a/app/main.qml b/app/qml/main.qml similarity index 99% rename from app/main.qml rename to app/qml/main.qml index 7b02258..b55da31 100644 --- a/app/main.qml +++ b/app/qml/main.qml @@ -33,6 +33,8 @@ ApplicationWindow{ minimumWidth: 320 minimumHeight: 240 + visible: true + property bool fullscreen: shadersettings.fullscreen onFullscreenChanged: visibility = (fullscreen ? Window.FullScreen : Window.Windowed) diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc new file mode 100644 index 0000000..1650e35 --- /dev/null +++ b/app/qml/resources.qrc @@ -0,0 +1,68 @@ + + + frames/BlackRoughFrame.qml + frames/NoFrame.qml + frames/images/black-frame.png + frames/images/screen-frame-normals.png + frames/images/black-frame-normals.png + frames/images/screen-frame.png + frames/images/black-frame-original.png + frames/images/randfunction.png + frames/images/screen-frame-original.png + frames/WhiteSimpleFrame.qml + frames/utils/FrameShader.qml + frames/utils/NoFrameShader.qml + frames/utils/TerminalFrame.qml + SizeOverlay.qml + ShaderTerminal.qml + CheckableSlider.qml + ApplicationSettings.qml + SettingsWindow.qml + Fonts.qml + FontPixels.qml + SettingsGeneralTab.qml + PreprocessedTerminal.qml + TimeManager.qml + SimpleSlider.qml + ColorButton.qml + Glossy.qml + AboutDialog.qml + InsertNameDialog.qml + SettingsEffectsTab.qml + main.qml + SettingsTerminalTab.qml + FontScanlines.qml + fonts/1982-commodore64/C64_Pro_v1.0-STYLE.ttf + fonts/1982-commodore64/license.txt + fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf + fonts/1982-commodore64/C64_Elite_Mono_v1.0-STYLE.ttf + fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf + fonts/1982-commodore64/C64_User_v1.0-STYLE.ttf + fonts/1977-apple2/FreeLicense.txt + fonts/1977-apple2/PRNumber3.ttf + fonts/1977-apple2/PrintChar21.ttf + fonts/1971-ibm-3278/README.md + fonts/1971-ibm-3278/LICENSE.txt + fonts/1971-ibm-3278/3270Medium.ttf + fonts/1985-atari-st/AtariST8x16SystemFont.ttf + fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf + fonts/modern-terminus/TerminusTTF-4.38.2.ttf + fonts/1977-commodore-pet/FreeLicense.txt + fonts/1977-commodore-pet/COMMODORE_PET_128_2y.ttf + fonts/1977-commodore-pet/COMMODORE_PET.ttf + fonts/1977-commodore-pet/COMMODORE_PET_64_2y.ttf + fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf + fonts/1977-commodore-pet/COMMODORE_PET_64.ttf + fonts/1977-commodore-pet/COMMODORE_PET_128.ttf + fonts/1977-commodore-pet/COMMODORE_PET_2x.ttf + fonts/1979-atari-400-800/ReadMe.rtf + fonts/1979-atari-400-800/ATARI400800_original.TTF + fonts/1979-atari-400-800/ATARI400800_squared.TTF + fonts/1979-atari-400-800/ATARI400800_rounded.TTF + fonts/1985-ibm-pc-vga/Perfect DOS VGA 437 Win.ttf + fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf + fonts/1985-ibm-pc-vga/dos437.txt + Storage.qml + + + diff --git a/cool-old-term b/cool-old-term deleted file mode 100755 index 9659e7e..0000000 --- a/cool-old-term +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -#This is a workaround for an ubuntu specific problem with appmenu-qt5. -QT_QPA_PLATFORMTHEME= -qmlscene -I $(dirname $0)/imports $(dirname $0)/app/main.qml diff --git a/cool-old-term.pro b/cool-old-term.pro index a478cea..73a5e6a 100644 --- a/cool-old-term.pro +++ b/cool-old-term.pro @@ -1,4 +1,4 @@ -TEMPLATE =subdirs -CONFIG += ordered -SUBDIRS= konsole-qml-plugin\ - app +TEMPLATE = subdirs + +SUBDIRS += app +SUBDIRS += konsole-qml-plugin diff --git a/konsole-qml-plugin/debian/changelog b/konsole-qml-plugin/debian/changelog deleted file mode 100644 index a4a741d..0000000 --- a/konsole-qml-plugin/debian/changelog +++ /dev/null @@ -1,29 +0,0 @@ -konsole-qml-plugin (0.1.2) raring; urgency=low - - * Fixed text display bug (LP:#1182503) - - -- Dmitry Zagnoyko Mon, 10 Jun 2013 09:49:02 +0300 - -konsole-qml-plugin (0.1.1) raring; urgency=low - - * Fixed issue with float values of widget size - * Added virtual key event for qml KSession component - - -- Dmitry Zagnoyko Mon, 06 May 2013 20:11:10 +0300 - -konsole-qml-plugin (0.1.0ubuntu1~quantal1~test2) quantal; urgency=low - - * Added qml properties for KTerminal - * Fixed visibility sope: removed konsole namespace - * Added qmltypes - * Fixed qml plugin path - * Added KSession class - - -- Dmitry Zagnoyko Sat, 20 Apr 2013 21:44:26 +0300 - -konsole-qml-plugin (0.1.0ubuntu1~quantal1~test1) quantal; urgency=low - - * Initial release - * Ported KDE Konsole - - -- Dmitry Zagnoyko Fri, 19 Apr 2013 20:22:12 +0300 diff --git a/konsole-qml-plugin/debian/compat b/konsole-qml-plugin/debian/compat deleted file mode 100644 index ec63514..0000000 --- a/konsole-qml-plugin/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/konsole-qml-plugin/debian/control b/konsole-qml-plugin/debian/control deleted file mode 100644 index 576cf99..0000000 --- a/konsole-qml-plugin/debian/control +++ /dev/null @@ -1,40 +0,0 @@ -Source: konsole-qml-plugin -Section: libs -Priority: optional -Maintainer: Ubuntu Developers -Build-Depends: debhelper (>= 9.0.0), -# libgl1-mesa-dev | libgl-dev, -# libgles2-mesa-dev - qtbase5-dev, - qtdeclarative5-dev, - qt5-default, -Standards-Version: 3.9.4 -Homepage: http://konsole.kde.org/ - -Package: qtdeclarative5-konsole-qml-plugin -Architecture: any -Multi-Arch: same -Pre-Depends: ${misc:Pre-Depends} -Depends: ${misc:Depends}, ${shlibs:Depends}, -Description: KDE Konsole QML plugin - qml terminal plugin - Originaly, Konsole is a terminal emulator from KDE. This is ported - version and do not require KDE. - . - This package contains the Konsole terminal emulator plugin - for Qt Qml, which offers access to terminal by KTerminal and - KSession elements. KTerminal is used for displaying information - given by KSession. - - -#Package: konsole-qml-plugin-dbg -#Priority: extra -#Architecture: any -#Section: debug -#Depends: ${misc:Depends} -#Description: KDE Konsole QML plugin debugging symbols -# Originaly, Konsole is a terminal emulator from KDE. This is ported -# version without KDE tails and do not require KDE. -# . -# This package contains the debugging symbols for the KDE Konsole -# QML plugin. - diff --git a/konsole-qml-plugin/debian/copyright b/konsole-qml-plugin/debian/copyright deleted file mode 100644 index d94b50b..0000000 --- a/konsole-qml-plugin/debian/copyright +++ /dev/null @@ -1,50 +0,0 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/3.0/ -Upstream-Name: konsole-qml-plugin -Source: - -Files: * -Copyright: 2013 Dmitry Zagnoyko - 2008 e_k - 2006-2008 Robert Knight - 2003-2007 Oswald Buddenhagen - 2000 Stephan Kulow - 1997-1998 Lars Doelle -License: GPL-3 - -Files: debian/* -Copyright: 2013 Dmitry Zagnoyko -License: LGPL-3 - -License: GPL-3 - This package is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 3 of the License. - . - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - . - You should have received a copy of the GNU General Public License - along with this program. If not, see . - . - On Debian systems, the complete text of the GNU General - Public License can be found in "/usr/share/common-licenses/GPL-3". - -License: LGPL-3 - This package is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License. - . - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - . - You should have received a copy of the GNU General Public License - along with this program. If not, see . - . - On Debian systems, the complete text of the GNU Lesser General - Public License can be found in "/usr/share/common-licenses/LGPL-3". diff --git a/konsole-qml-plugin/debian/rules b/konsole-qml-plugin/debian/rules deleted file mode 100755 index 63c23af..0000000 --- a/konsole-qml-plugin/debian/rules +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -#export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -#export CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -#export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed - -override_dh_auto_configure: - QT_SELECT=qt5 dh_auto_configure - -%: - dh $@ --list-missing --parallel -# WARN: currently, no pakgage -# --dbg-package=konsole-qml-plugin-dbg - - -#override_dh_builddeb: -# dh_builddeb -- -Zxz - diff --git a/konsole-qml-plugin/debian/source/format b/konsole-qml-plugin/debian/source/format deleted file mode 100644 index 89ae9db..0000000 --- a/konsole-qml-plugin/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (native) diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro index 3008d02..ff7eaab 100644 --- a/konsole-qml-plugin/konsole-qml-plugin.pro +++ b/konsole-qml-plugin/konsole-qml-plugin.pro @@ -15,7 +15,29 @@ TARGET = kdekonsole PLUGIN_IMPORT_PATH = org/kde/konsole PLUGIN_ASSETS = $$PWD/assets/* -INSTALL_DIR = ../imports +DESTDIR = $$OUT_PWD/../imports/$$PLUGIN_IMPORT_PATH + +# Copy additional plugin files +QMAKE_COPY = "cp -r" + +defineTest(copyToDestdir) { + files = $$1 + + for(FILE, files) { + DDIR = $$DESTDIR + + # Replace slashes in paths with backslashes for Windows + win32:FILE ~= s,/,\\,g + win32:DDIR ~= s,/,\\,g + + QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($$DDIR) $$escape_expand(\\n\\t) + } + + export(QMAKE_POST_LINK) +} + +copyToDestdir($$PLUGIN_ASSETS) +copyToDestdir($$PWD/src/qmldir) ######################################### ## SOURCES -- 2.47.2 From dd238755c9fbf13503e32f92bd99576b8762fb2f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 2 Sep 2014 23:58:58 +0200 Subject: [PATCH 064/477] App is now installable with sudo make install. --- app/app.pro | 7 +++++++ konsole-qml-plugin/konsole-qml-plugin.pro | 2 ++ 2 files changed, 9 insertions(+) diff --git a/app/app.pro b/app/app.pro index 2a72f3a..e7b5064 100644 --- a/app/app.pro +++ b/app/app.pro @@ -6,3 +6,10 @@ SOURCES = main.cpp RESOURCES += qml/resources.qrc +######################################### +## INTALLS +######################################### + +target.path += /usr/bin/ + +INSTALLS += target diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro index ff7eaab..01a963d 100644 --- a/konsole-qml-plugin/konsole-qml-plugin.pro +++ b/konsole-qml-plugin/konsole-qml-plugin.pro @@ -17,6 +17,8 @@ PLUGIN_ASSETS = $$PWD/assets/* DESTDIR = $$OUT_PWD/../imports/$$PLUGIN_IMPORT_PATH +INSTALL_DIR = $$[QT_INSTALL_QML] + # Copy additional plugin files QMAKE_COPY = "cp -r" -- 2.47.2 From ae0154935ddbb1d7b1266694e37586159df11c68 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 3 Sep 2014 00:47:00 +0200 Subject: [PATCH 065/477] Changed plugin name to avoid future conflicts. --- app/qml/PreprocessedTerminal.qml | 2 +- app/qml/main.qml | 2 - konsole-qml-plugin/konsole-qml-plugin.pro | 2 +- konsole-qml-plugin/src/plugin.cpp | 8 +-- konsole-qml-plugin/src/plugins.qmltypes | 61 +++++++++-------------- konsole-qml-plugin/src/qmldir | 2 +- 6 files changed, 31 insertions(+), 46 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 7a876bc..03030c1 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -22,7 +22,7 @@ import QtQuick 2.2 import QtGraphicalEffects 1.0 import QtQuick.Controls 1.1 -import org.kde.konsole 0.1 +import org.crt.konsole 0.1 Item{ id: terminalContainer diff --git a/app/qml/main.qml b/app/qml/main.qml index b55da31..690d654 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -23,8 +23,6 @@ import QtQuick.Window 2.1 import QtQuick.Controls 1.1 import QtGraphicalEffects 1.0 -import org.kde.konsole 0.1 - ApplicationWindow{ id: terminalWindow diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro index 01a963d..55e6fab 100644 --- a/konsole-qml-plugin/konsole-qml-plugin.pro +++ b/konsole-qml-plugin/konsole-qml-plugin.pro @@ -12,7 +12,7 @@ DEFINES += HAVE_POSIX_OPENPT HAVE_SYS_TIME_H HAVE_UPDWTMPX DEFINES += Q_WS_UBUNTU TARGET = kdekonsole -PLUGIN_IMPORT_PATH = org/kde/konsole +PLUGIN_IMPORT_PATH = org/crt/konsole PLUGIN_ASSETS = $$PWD/assets/* DESTDIR = $$OUT_PWD/../imports/$$PLUGIN_IMPORT_PATH diff --git a/konsole-qml-plugin/src/plugin.cpp b/konsole-qml-plugin/src/plugin.cpp index ce7f3d5..1b28ec4 100644 --- a/konsole-qml-plugin/src/plugin.cpp +++ b/konsole-qml-plugin/src/plugin.cpp @@ -33,7 +33,7 @@ KonsoleKterminalPlugin::~KonsoleKterminalPlugin() { } void KonsoleKterminalPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { - Q_ASSERT(uri == QLatin1String("org.kde.konsole")); + Q_ASSERT(uri == QLatin1String("org.crt.konsole")); QQmlExtensionPlugin::initializeEngine(engine, uri); @@ -44,8 +44,8 @@ void KonsoleKterminalPlugin::initializeEngine(QQmlEngine *engine, const char *ur QString cs, kbl; foreach (QString pwd, pwds) { - cs = pwd + "/org/kde/konsole/color-schemes"; - kbl = pwd + "/org/kde/konsole/kb-layouts"; + cs = pwd + "/org/crt/konsole/color-schemes"; + kbl = pwd + "/org/crt/konsole/kb-layouts"; if (QDir(cs).exists()) break; } @@ -56,7 +56,7 @@ void KonsoleKterminalPlugin::initializeEngine(QQmlEngine *engine, const char *ur void KonsoleKterminalPlugin::registerTypes(const char *uri) { - Q_ASSERT(uri == QLatin1String("org.kde.konsole")); + Q_ASSERT(uri == QLatin1String("org.crt.konsole")); qmlRegisterType(uri, 0, 1, "KTerminal"); qmlRegisterType(uri, 0, 1, "KSession"); diff --git a/konsole-qml-plugin/src/plugins.qmltypes b/konsole-qml-plugin/src/plugins.qmltypes index cfde7ec..45aa3ab 100644 --- a/konsole-qml-plugin/src/plugins.qmltypes +++ b/konsole-qml-plugin/src/plugins.qmltypes @@ -3,13 +3,15 @@ import QtQuick.tooling 1.1 // This file describes the plugin-supplied types contained in the library. // It is used for QML tooling purposes only. // -// This file was auto-generated with the command '/usr/lib/x86_64-linux-gnu/qt5/bin/qmlplugindump -notrelocatable org.kde.konsole 0.1 ../../../'. +// This file was auto-generated by: +// 'qmlplugindump org.crt.konsole 0.1 .' Module { Component { name: "KSession" prototype: "QObject" - exports: ["org.kde.konsole/KSession 0.1"] + exports: ["KSession 0.1"] + exportMetaObjectRevisions: [0] Property { name: "kbScheme"; type: "string" } Signal { name: "finished" } Signal { @@ -54,14 +56,16 @@ Module { name: "KTerminalDisplay" defaultProperty: "data" prototype: "QQuickPaintedItem" - exports: ["org.kde.konsole/KTerminal 0.1"] + exports: ["KTerminal 0.1"] + exportMetaObjectRevisions: [0] Property { name: "session"; type: "KSession"; isPointer: true } Property { name: "colorScheme"; type: "string" } Property { name: "font"; type: "QFont" } Property { name: "activeFocusOnClick"; type: "bool" } Property { name: "ShowIMEOnClick"; type: "bool" } - Property { name: "terminalSize"; type: "QSize" } - Property { name: "paintedFontSize"; type: "QSize"} + Property { name: "terminalSize"; type: "QSize"; isReadonly: true } + Property { name: "paintedFontSize"; type: "QSize"; isReadonly: true } + Property { name: "usesMouse"; type: "bool"; isReadonly: true } Signal { name: "changedScheme" Parameter { name: "scheme"; type: "string" } @@ -74,6 +78,7 @@ Module { name: "changedAutoFocus" Parameter { name: "au"; type: "bool" } } + Signal { name: "updatedImage" } Signal { name: "mouseSignal" Parameter { type: "int" } @@ -118,9 +123,6 @@ Module { name: "changedSession" Parameter { name: "session"; type: "KSession"; isPointer: true } } - Signal { name: "terminalSizeChanged" } - Singal { name: "paintedFontSizeChanged" } - Signal { name: "updatedImage" } Method { name: "forcedFocus" } Method { name: "setColorScheme" @@ -128,31 +130,15 @@ Module { } Method { name: "availableColorSchemes"; type: "QStringList" } Method { - name: "scrollWheel" - Parameter { name: "x"; type: "double" } - Parameter { name: "y"; type: "double" } - Parameter { name: "lines"; type: "int" } + name: "scrollScreenWindow" + Parameter { name: "mode"; type: "ScreenWindow::RelativeScrollMode" } + Parameter { name: "amount"; type: "int" } } Method { - name: "mousePress" - Parameter { name: "x"; type: "double" } - Parameter { name: "y"; type: "double" } - } - Method { - name: "mouseMove" - Parameter { name: "x"; type: "double" } - Parameter { name: "y"; type: "double" } - } - Method { - name: "mouseRelease" - Parameter { name: "x"; type: "double" } - Parameter { name: "y"; type: "double" } - } - Method { - name: "mouseDoubleClick" - Parameter { name: "x"; type: "double" } - Parameter { name: "y"; type: "double" } + name: "setUsesMouse" + Parameter { name: "usesMouse"; type: "bool" } } + Method { name: "getUsesMouse"; type: "bool" } Method { name: "autoFocus"; type: "bool" } Method { name: "setAutoFocus" @@ -192,20 +178,21 @@ Module { Parameter { name: "color"; type: "QColor" } } Method { name: "selectionChanged" } + Method { + name: "banana" + Parameter { name: "x"; type: "int" } + Parameter { name: "y"; type: "int" } + Parameter { name: "z"; type: "int" } + Parameter { name: "w"; type: "int" } + } Method { name: "setSession" Parameter { name: "session"; type: "KSession"; isPointer: true } } Method { name: "getSession"; type: "KSession*" } - - //My additions Method { name: "setLineSpacing" - Parameter { name: "i"; type: "uint"} - } - Method { - name: "setUsesMouse" - Parameter { name: "usesMouse"; type: "bool"} + Parameter { type: "uint" } } } } diff --git a/konsole-qml-plugin/src/qmldir b/konsole-qml-plugin/src/qmldir index f7c8b18..39a9ecd 100644 --- a/konsole-qml-plugin/src/qmldir +++ b/konsole-qml-plugin/src/qmldir @@ -1,3 +1,3 @@ -module org.kde.konsole +module org.crt.konsole typeinfo plugins.qmltypes plugin kdekonsole -- 2.47.2 From c4d016a0fd9e1551366f5127c76455bcb98db5ee Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 3 Sep 2014 21:33:08 +0200 Subject: [PATCH 066/477] Update README.md to reflect reworked build. --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ad296d6..16bd1a7 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ #cool-old-term ##Description -cool-old-term is a terminal emulator which tries to mimic the look and feel of the old cathode tube screens. +cool-old-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. -It now uses the Konsole engine which is powerful and mature. +It uses the Konsole engine which is powerful and mature. This terminal emulator requires Qt 5.2 or higher to run. @@ -85,12 +85,9 @@ git clone https://github.com/Swordifish90/cool-old-term.git # Build it cd cool-old-term -cd konsole-qml-plugin # Compile (Fedora and OpenSUSE user should use qmake-qt5 instead of qmake) -qmake && make && make install - -cd .. +qmake && make # Have fun! ./cool-old-term -- 2.47.2 From b047dc931304b6cbbfc4d0329118a305d266114d Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 3 Sep 2014 22:19:34 +0200 Subject: [PATCH 067/477] Rebranding the application cool-retro-term! --- README.md | 20 +++++++++---------- app/app.pro | 2 +- app/qml/AboutDialog.qml | 8 ++++---- app/qml/ApplicationSettings.qml | 6 +++--- app/qml/CheckableSlider.qml | 6 +++--- app/qml/ColorButton.qml | 6 +++--- app/qml/FontPixels.qml | 6 +++--- app/qml/FontScanlines.qml | 6 +++--- app/qml/Fonts.qml | 6 +++--- app/qml/InsertNameDialog.qml | 6 +++--- app/qml/PreprocessedTerminal.qml | 8 ++++---- app/qml/SettingsEffectsTab.qml | 6 +++--- app/qml/SettingsGeneralTab.qml | 6 +++--- app/qml/SettingsTerminalTab.qml | 6 +++--- app/qml/SettingsWindow.qml | 6 +++--- app/qml/ShaderTerminal.qml | 6 +++--- app/qml/SimpleSlider.qml | 6 +++--- app/qml/SizeOverlay.qml | 6 +++--- app/qml/Storage.qml | 6 +++--- app/qml/TimeManager.qml | 6 +++--- app/qml/main.qml | 8 ++++---- cool-old-term.pro => cool-retro-term.pro | 0 ...old-term.schema => cool-retro-term.schema} | 0 23 files changed, 71 insertions(+), 71 deletions(-) rename cool-old-term.pro => cool-retro-term.pro (100%) rename konsole-qml-plugin/assets/color-schemes/{cool-old-term.schema => cool-retro-term.schema} (100%) diff --git a/README.md b/README.md index 16bd1a7..d08f7f1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -#cool-old-term +#cool-retro-term ##Description -cool-old-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. +cool-retro-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. It uses the Konsole engine which is powerful and mature. @@ -13,14 +13,14 @@ This terminal emulator requires Qt 5.2 or higher to run. ![Image]() ![Image]() -## Get cool-old-term -You can either build cool-old-term yourself (see below) or walk the easy way and install one of these packages: +## Get cool-retro-term +You can either build cool-retro-term yourself (see below) or walk the easy way and install one of these packages: -Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-old-term). +Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term). -Arch users can install this [package](https://aur.archlinux.org/packages/cool-old-term-git/) directly via the [AUR](https://aur.archlinux.org): +Arch users can install this [package](https://aur.archlinux.org/packages/cool-retro-term-git/) directly via the [AUR](https://aur.archlinux.org): - yaourt -S aur/cool-old-term-git + yaourt -S aur/cool-retro-term-git ##Build instructions @@ -81,14 +81,14 @@ Once you installed all dependencies (Qt is installed and in your path) you need ```bash # Get it from GitHub -git clone https://github.com/Swordifish90/cool-old-term.git +git clone https://github.com/Swordfish90/cool-retro-term.git # Build it -cd cool-old-term +cd cool-retro-term # Compile (Fedora and OpenSUSE user should use qmake-qt5 instead of qmake) qmake && make # Have fun! -./cool-old-term +./cool-retro-term ``` diff --git a/app/app.pro b/app/app.pro index e7b5064..3e47c73 100644 --- a/app/app.pro +++ b/app/app.pro @@ -1,5 +1,5 @@ QT += qml quick widgets -TARGET = cool-old-term +TARGET = cool-retro-term DESTDIR = $$OUT_PWD/../ SOURCES = main.cpp diff --git a/app/qml/AboutDialog.qml b/app/qml/AboutDialog.qml index 8c109c2..a2747c4 100644 --- a/app/qml/AboutDialog.qml +++ b/app/qml/AboutDialog.qml @@ -15,7 +15,7 @@ Window{ spacing: 15 Text { anchors.horizontalCenter: parent.horizontalCenter - text: "cool-old-term" + text: "cool-retro-term" font {bold: true; pointSize: 18} } Loader{ @@ -74,7 +74,7 @@ Window{ text: shadersettings.version + "\n" + qsTr("Author: ") + "Filippo Scognamiglio\n" + qsTr("Email: ") + "flscogna@gmail.com\n" + - qsTr("Source: ") + "https://github.com/Swordifish90/cool-old-term\n" + qsTr("Source: ") + "https://github.com/Swordfish90/cool-retro-term\n" } } } @@ -84,9 +84,9 @@ Window{ anchors.fill: parent readOnly: true text: "Copyright (c) 2013 Filippo Scognamiglio \n\n" + - "https://github.com/Swordifish90/cool-old-term\n\n" + + "https://github.com/Swordfish90/cool-retro-term\n\n" + - "cool-old-term is free software: you can redistribute it and/or modify " + + "cool-retro-term is free software: you can redistribute it and/or modify " + "it under the terms of the GNU General Public License as published by " + "the Free Software Foundation, either version 3 of the License, or " + "(at your option) any later version.\n\n" + diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index faa56a6..9c97946 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/CheckableSlider.qml b/app/qml/CheckableSlider.qml index 683317b..ceb9c4f 100644 --- a/app/qml/CheckableSlider.qml +++ b/app/qml/CheckableSlider.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/ColorButton.qml b/app/qml/ColorButton.qml index 4a737be..3c1eb60 100644 --- a/app/qml/ColorButton.qml +++ b/app/qml/ColorButton.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml index 1095776..b6debbd 100644 --- a/app/qml/FontPixels.qml +++ b/app/qml/FontPixels.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml index c0b20de..361c1be 100644 --- a/app/qml/FontScanlines.qml +++ b/app/qml/FontScanlines.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml index dc2a03b..9acd11e 100644 --- a/app/qml/Fonts.qml +++ b/app/qml/Fonts.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/InsertNameDialog.qml b/app/qml/InsertNameDialog.qml index 85e86c1..763cdb3 100644 --- a/app/qml/InsertNameDialog.qml +++ b/app/qml/InsertNameDialog.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 03030c1..e2754aa 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. @@ -75,7 +75,7 @@ Item{ id: kterminal anchors.fill: parent - colorScheme: "cool-old-term" + colorScheme: "cool-retro-term" session: KSession { id: ksession diff --git a/app/qml/SettingsEffectsTab.qml b/app/qml/SettingsEffectsTab.qml index 2d71b48..0c1e99c 100644 --- a/app/qml/SettingsEffectsTab.qml +++ b/app/qml/SettingsEffectsTab.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/SettingsGeneralTab.qml b/app/qml/SettingsGeneralTab.qml index b560b5d..c4ea35a 100644 --- a/app/qml/SettingsGeneralTab.qml +++ b/app/qml/SettingsGeneralTab.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index af1c067..22c6084 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/SettingsWindow.qml b/app/qml/SettingsWindow.qml index 17b6580..e7ab486 100644 --- a/app/qml/SettingsWindow.qml +++ b/app/qml/SettingsWindow.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index bdd3a87..531d91e 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/SimpleSlider.qml b/app/qml/SimpleSlider.qml index f362e06..7b741aa 100644 --- a/app/qml/SimpleSlider.qml +++ b/app/qml/SimpleSlider.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/SizeOverlay.qml b/app/qml/SizeOverlay.qml index 6f0a69c..7d67314 100644 --- a/app/qml/SizeOverlay.qml +++ b/app/qml/SizeOverlay.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/Storage.qml b/app/qml/Storage.qml index 92dadd7..f06112d 100644 --- a/app/qml/Storage.qml +++ b/app/qml/Storage.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/TimeManager.qml b/app/qml/TimeManager.qml index b5dd5be..1ecb939 100644 --- a/app/qml/TimeManager.qml +++ b/app/qml/TimeManager.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. diff --git a/app/qml/main.qml b/app/qml/main.qml index 690d654..9de405d 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" -* https://github.com/Swordifish90/cool-old-term +* https://github.com/Swordfish90/cool-retro-term * -* This file is part of cool-old-term. +* This file is part of cool-retro-term. * -* cool-old-term is free software: you can redistribute it and/or modify +* cool-retro-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. @@ -38,7 +38,7 @@ ApplicationWindow{ flags: Qt.WA_TranslucentBackground color: "#00000000" - title: qsTr("cool-old-term") + title: qsTr("cool-retro-term") Action { id: showMenubarAction diff --git a/cool-old-term.pro b/cool-retro-term.pro similarity index 100% rename from cool-old-term.pro rename to cool-retro-term.pro diff --git a/konsole-qml-plugin/assets/color-schemes/cool-old-term.schema b/konsole-qml-plugin/assets/color-schemes/cool-retro-term.schema similarity index 100% rename from konsole-qml-plugin/assets/color-schemes/cool-old-term.schema rename to konsole-qml-plugin/assets/color-schemes/cool-retro-term.schema -- 2.47.2 From 7687ccf3e85fe50d60f39d99d607ea351233bf71 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 3 Sep 2014 22:35:41 +0200 Subject: [PATCH 068/477] Fix #88 . Plugin strings use utf8 instead of latin1. --- konsole-qml-plugin/src/plugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/konsole-qml-plugin/src/plugin.cpp b/konsole-qml-plugin/src/plugin.cpp index 1b28ec4..eaa3858 100644 --- a/konsole-qml-plugin/src/plugin.cpp +++ b/konsole-qml-plugin/src/plugin.cpp @@ -49,8 +49,8 @@ void KonsoleKterminalPlugin::initializeEngine(QQmlEngine *engine, const char *ur if (QDir(cs).exists()) break; } - setenv("KB_LAYOUT_DIR",kbl.toLatin1().constData(),1); - setenv("COLORSCHEMES_DIR",cs.toLatin1().constData(),1); + setenv("KB_LAYOUT_DIR",kbl.toUtf8().constData(),1); + setenv("COLORSCHEMES_DIR",cs.toUtf8().constData(),1); } } -- 2.47.2 From 39bb5f5ee9b387fd81be32b40bf307f6037c6221 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 4 Sep 2014 12:03:57 +0200 Subject: [PATCH 069/477] Desktop file has now the correct name and is installable. --- cool-old-term.desktop | 13 ------------- cool-retro-term.desktop | 11 +++++++++++ cool-retro-term.pro | 5 +++++ 3 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 cool-old-term.desktop create mode 100644 cool-retro-term.desktop diff --git a/cool-old-term.desktop b/cool-old-term.desktop deleted file mode 100644 index 785cc2a..0000000 --- a/cool-old-term.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Comment= -Exec=qmlscene -I /usr/share/cool-old-term/{imports,app/main.qml} -GenericName=Terminal emulator -Icon=utilities-terminal -MimeType= -Name=Cool Old Term -Path= -Categories=Qt;System;TerminalEmulator; -StartupNotify=true -Terminal=false -TerminalOptions= -Type=Application diff --git a/cool-retro-term.desktop b/cool-retro-term.desktop new file mode 100644 index 0000000..2d06c64 --- /dev/null +++ b/cool-retro-term.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Comment=Use the command line the old way +Exec=cool-retro-term +GenericName=Terminal emulator +Icon=utilities-terminal +MimeType= +Name=Cool Retro Term +Categories=Qt;System;Utility;TerminalEmulator; +StartupNotify=true +Terminal=false +Type=Application diff --git a/cool-retro-term.pro b/cool-retro-term.pro index 73a5e6a..9e67778 100644 --- a/cool-retro-term.pro +++ b/cool-retro-term.pro @@ -2,3 +2,8 @@ TEMPLATE = subdirs SUBDIRS += app SUBDIRS += konsole-qml-plugin + +desktop.files += cool-retro-term.desktop +desktop.path += /usr/share/applications + +INSTALLS += desktop -- 2.47.2 From 1928d57f461f3e9e820c419044093103ff7b59ce Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Mon, 8 Sep 2014 01:33:37 +0200 Subject: [PATCH 070/477] Update and rename cool-old-term.spec to cool-retro-term.spec Ported the spec file to CRT's new, way nicer build system. PS: Many thanks to Glen Oakley and Doug Newgard whose workarounds were used previously. --- ...ool-old-term.spec => cool-retro-term.spec} | 66 ++++++++++--------- 1 file changed, 36 insertions(+), 30 deletions(-) rename packaging/rpm/{cool-old-term.spec => cool-retro-term.spec} (58%) diff --git a/packaging/rpm/cool-old-term.spec b/packaging/rpm/cool-retro-term.spec similarity index 58% rename from packaging/rpm/cool-old-term.spec rename to packaging/rpm/cool-retro-term.spec index 92af768..2998aab 100644 --- a/packaging/rpm/cool-old-term.spec +++ b/packaging/rpm/cool-retro-term.spec @@ -1,12 +1,8 @@ # -# spec file for package cool-old-term +# spec file for package cool-retro-term # # Copyright © 2014 Markus S. # -# Contains snippets from https://aur.archlinux.org/packages/cool-old-term-git -# by Glen Oakley -# and Doug Newgard -# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -20,18 +16,18 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -Name: cool-old-term -Summary: Cool Old Terminal -Version: 0.9 +Name: cool-retro-term +Summary: Cool Retro Terminal +Version: 0.9.20140905 Release: 0%{?dist} Group: System/X11/Terminals License: GPLv3 -URL: https://github.com/Swordifish90/cool-old-term +URL: https://github.com/Swordifish90/cool-retro-term -# For this spec file to work, the cool-old-term sources must be located -# in a directory named cool-old-term-0.9 (with "0.9" being the version +# For this spec file to work, the cool-retro-term sources must be located +# in a directory named cool-retro-term-0.9 (with "0.9" being the version # number defined above). -# If the sources are compressed in another format than tar.xz, change the +# If the sources are compressed in another format than .tar.xz, change the # file extension accordingly. Source0: %{name}-%{version}.tar.xz @@ -39,17 +35,15 @@ BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Declarative) BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Quick) +BuildRequires: desktop-file-utils # Package names only verified with Fedora and openSUSE. # Should the packages in your distro be named dirrerently, # see http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto -# -# QtDeclarative-devel required for "qmlscene" binary %if 0%{?fedora} Requires: qt5-qtbase Requires: qt5-qtbase-gui Requires: qt5-qtdeclarative -Requires: qt5-qtdeclarative-devel Requires: qt5-qtgraphicaleffects Requires: qt5-qtquickcontrols %endif @@ -59,12 +53,11 @@ Requires: libqt5-qtquickcontrols Requires: libqt5-qtbase Requires: libQt5Gui5 Requires: libqt5-qtdeclarative -Requires: libqt5-qtdeclarative-devel Requires: libqt5-qtgraphicaleffects %endif %description -cool-old-term is a terminal emulator which tries to mimic the look and feel +cool-retro-term is a terminal emulator which tries to mimic the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. @@ -72,30 +65,43 @@ customizable, and reasonably lightweight. %setup -q %build -pushd konsole-qml-plugin -qmake-qt5 -o Makefile konsole-qml-plugin.pro +qmake-qt5 make %{?_smp_mflags} -popd %install -pushd konsole-qml-plugin -%{make_install} -popd +# Work around weird qmake behaviour: http://davmac.wordpress.com/2007/02/21/qts-qmake/ +make INSTALL_ROOT=%{buildroot} install -install -d "%{buildroot}/%{_datadir}/%{name}/" "%{buildroot}/%{_bindir}" -cp -a app imports "%{buildroot}/%{_datadir}/%{name}/" -echo -e '#!/bin/bash\nqmlscene -I /usr/share/cool-old-term/{imports,app/main.qml}' > "%{buildroot}/%{_bindir}/%{name}" -chmod 755 "%{buildroot}/%{_bindir}/%{name}" +desktop-file-install \ +--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \ +%{name}.desktop %files %defattr(-,root,root,-) %doc gpl-2.0.txt gpl-3.0.txt README.md %{_bindir}/%{name} -%{_datadir}/%{name} -# FIXME: Icon and Desktop files -# %{_datadir}/applications/%{name}.desktop +%{_datadir}/applications/%{name}.desktop +# FIXME: Icon # %{_datadir}/pixmaps/%{name}.png # %{_datadir}/icons/hicolor/*/*/* +%if 0%{?suse_version} +%{_libqt5_archdatadir}/qml +%else +%{_libdir}/qt5/qml/org/crt +%endif + %clean rm -rf %{buildroot} + +%changelog +* Sun Sep 7 14:03:35 UTC 2014 - kamikazow@web.de +- cool-old-term has been renamed to cool-retro-term +- Ported the spec file to CRT's new, way nicer build system + +* Fri Aug 29 20:56:20 UTC 2014 - kamikazow@web.de +- Fixed: QtDeclarative-devel is required for "qmlscene" binary + +* Fri Aug 1 14:09:35 UTC 2014 - kamikazow@web.de +- First build +- cool-old-term 0.9 -- 2.47.2 From c8fd4df6f3ee7b5e367716b7647a484f9fbefeb5 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Mon, 8 Sep 2014 16:52:00 +0200 Subject: [PATCH 071/477] Update cool-retro-term.spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Condition not necessary after all… :-) --- packaging/rpm/cool-retro-term.spec | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packaging/rpm/cool-retro-term.spec b/packaging/rpm/cool-retro-term.spec index 2998aab..1d5f931 100644 --- a/packaging/rpm/cool-retro-term.spec +++ b/packaging/rpm/cool-retro-term.spec @@ -80,17 +80,12 @@ desktop-file-install \ %defattr(-,root,root,-) %doc gpl-2.0.txt gpl-3.0.txt README.md %{_bindir}/%{name} +%{_libdir}/qt5/qml/ %{_datadir}/applications/%{name}.desktop # FIXME: Icon # %{_datadir}/pixmaps/%{name}.png # %{_datadir}/icons/hicolor/*/*/* -%if 0%{?suse_version} -%{_libqt5_archdatadir}/qml -%else -%{_libdir}/qt5/qml/org/crt -%endif - %clean rm -rf %{buildroot} -- 2.47.2 From 1e5c36a351aa33729fb98966d125b5ef1f61f889 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Mon, 8 Sep 2014 16:57:26 +0200 Subject: [PATCH 072/477] Update cool-retro-term.spec --- packaging/rpm/cool-retro-term.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/rpm/cool-retro-term.spec b/packaging/rpm/cool-retro-term.spec index 1d5f931..b7a3218 100644 --- a/packaging/rpm/cool-retro-term.spec +++ b/packaging/rpm/cool-retro-term.spec @@ -18,7 +18,7 @@ Name: cool-retro-term Summary: Cool Retro Terminal -Version: 0.9.20140905 +Version: 0.9 Release: 0%{?dist} Group: System/X11/Terminals License: GPLv3 -- 2.47.2 From 639fd53a198beb7628c8418693220401a48f3065 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 10 Sep 2014 00:59:53 +0200 Subject: [PATCH 073/477] Simplify the unholy overengineered mess of rasterization. --- app/qml/ApplicationSettings.qml | 6 +- app/qml/FontPixels.qml | 36 ++-- app/qml/FontScanlines.qml | 34 ++-- app/qml/Fonts.qml | 1 + app/qml/PreprocessedTerminal.qml | 225 +++++++++++---------- app/qml/ShaderTerminal.qml | 4 +- app/qml/main.qml | 3 - konsole-qml-plugin/src/TerminalDisplay.cpp | 2 +- 8 files changed, 161 insertions(+), 150 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 9c97946..308f9be 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -99,7 +99,7 @@ Item{ // FONTS ////////////////////////////////////////////////////////////////// - signal terminalFontChanged(string fontSource, int pixelSize, int lineSpacing, size virtualCharSize) + signal terminalFontChanged(string fontSource, int pixelSize, int lineSpacing, real screenScaling) Loader{ id: fontManager @@ -141,9 +141,9 @@ Item{ var fontSource = fontManager.item.source; var pixelSize = fontManager.item.pixelSize; var lineSpacing = fontManager.item.lineSpacing; - var virtualCharSize = fontManager.item.virtualCharSize; + var screenScaling = fontManager.item.screenScaling; - terminalFontChanged(fontSource, pixelSize, lineSpacing, virtualCharSize); + terminalFontChanged(fontSource, pixelSize, lineSpacing, screenScaling); } // FRAMES ///////////////////////////////////////////////////////////////// diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml index b6debbd..c430bef 100644 --- a/app/qml/FontPixels.qml +++ b/app/qml/FontPixels.qml @@ -27,45 +27,47 @@ Item{ property var _font: fontlist.get(selectedFontIndex) property var _scaling: fontScalingList[selectedScalingIndex] property var source: _font.source - property var fontScalingList: [0.75, 1.0, 1.25, 1.50, 1.75, 2.0, 2.25, 2.5] - property int pixelSize: _font.pixelSize * _scaling - property int lineSpacing: (_font.pixelSize / _font.virtualCharHeight) * _font.lineSpacing - property size virtualCharSize: Qt.size(_font.virtualCharWidth, - _font.virtualCharHeight) + property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] + property int pixelSize: _font.pixelSize + property int lineSpacing: _font.lineSpacing + property real screenScaling: _scaling * _font.baseScaling ListModel{ id: fontlist + ListElement{ + text: "Commodore PET 2Y (1977)" + source: "fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf" + lineSpacing: 2 + pixelSize: 16 + baseScaling: 3.0 + } ListElement{ text: "Commodore PET (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" lineSpacing: 2 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Apple ][ (1977)" source: "fonts/1977-apple2/PrintChar21.ttf" lineSpacing: 2 - virtualCharWidth: 7 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Atari 400-800 (1979)" source: "fonts/1979-atari-400-800/ATARI400800_original.TTF" lineSpacing: 3 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Commodore 64 (1982)" source: "fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf" lineSpacing: 3 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } } } diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml index 361c1be..c430bef 100644 --- a/app/qml/FontScanlines.qml +++ b/app/qml/FontScanlines.qml @@ -27,11 +27,10 @@ Item{ property var _font: fontlist.get(selectedFontIndex) property var _scaling: fontScalingList[selectedScalingIndex] property var source: _font.source - property var fontScalingList: [0.75, 1.0, 1.25, 1.50, 1.75, 2.0, 2.25, 2.50] - property int pixelSize: _font.pixelSize * _scaling - property int lineSpacing: (_font.pixelSize / _font.virtualCharHeight) * _font.lineSpacing - property size virtualCharSize: Qt.size(_font.virtualCharWidth, - _font.virtualCharHeight) + property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] + property int pixelSize: _font.pixelSize + property int lineSpacing: _font.lineSpacing + property real screenScaling: _scaling * _font.baseScaling ListModel{ id: fontlist @@ -39,41 +38,36 @@ Item{ text: "Commodore PET 2Y (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf" lineSpacing: 2 - virtualCharWidth: 4 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 16 + baseScaling: 3.0 } ListElement{ text: "Commodore PET (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" lineSpacing: 2 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Apple ][ (1977)" source: "fonts/1977-apple2/PrintChar21.ttf" lineSpacing: 2 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Atari 400-800 (1979)" source: "fonts/1979-atari-400-800/ATARI400800_original.TTF" lineSpacing: 3 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } ListElement{ text: "Commodore 64 (1982)" source: "fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf" lineSpacing: 3 - virtualCharWidth: 8 - virtualCharHeight: 8 - pixelSize: 32 + pixelSize: 8 + baseScaling: 4.0 } } } diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml index 9acd11e..d6df7ea 100644 --- a/app/qml/Fonts.qml +++ b/app/qml/Fonts.qml @@ -30,6 +30,7 @@ Item{ property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] property int pixelSize: _font.pixelSize * _scaling property int lineSpacing: pixelSize * _font.lineSpacing + property real screenScaling: 1.0 //In this configuration lineSpacing is proportional to pixelSize. diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index e2754aa..9302a6a 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -46,9 +46,6 @@ Item{ property real _maxBlurCoefficient: 0.90 property size virtualPxSize: Qt.size(1,1) - property size virtual_resolution: Qt.size(width / virtualPxSize.width, height / virtualPxSize.height) - property real deltay: 0.5 / virtual_resolution.height - property real deltax: 0.5 / virtual_resolution.width property real mBloom: shadersettings.bloom_strength property int mScanlines: shadersettings.rasterization @@ -73,8 +70,10 @@ Item{ KTerminal { id: kterminal - anchors.fill: parent + width: parent.width + height: parent.height + smooth: false colorScheme: "cool-retro-term" session: KSession { @@ -89,30 +88,15 @@ Item{ FontLoader{ id: fontLoader } Text{id: fontMetrics; text: "B"; visible: false} - function getPaintedSize(pixelSize){ - fontMetrics.font.family = fontLoader.name; - fontMetrics.font.pixelSize = pixelSize; - return Qt.size(fontMetrics.paintedWidth, fontMetrics.paintedHeight); - } - function isValid(size){ - return size.width >= 0 && size.height >= 0; - } - function handleFontChange(fontSource, pixelSize, lineSpacing, virtualCharSize){ + function handleFontChange(fontSource, pixelSize, lineSpacing, screenScaling){ fontLoader.source = fontSource; - font.pixelSize = pixelSize * shadersettings.window_scaling; + font.pixelSize = pixelSize; font.family = fontLoader.name; - var paintedSize = getPaintedSize(pixelSize); - var charSize = isValid(virtualCharSize) - ? virtualCharSize - : Qt.size(paintedSize.width / 2, paintedSize.height / 2); + width = Qt.binding(function() {return Math.floor(terminalContainer.width / screenScaling);}); + height = Qt.binding(function() {return Math.floor(terminalContainer.height / screenScaling);}); - var virtualPxSize = Qt.size((paintedSize.width / charSize.width) * shadersettings.window_scaling, - (paintedSize.height / charSize.height) * shadersettings.window_scaling) - - terminalContainer.virtualPxSize = virtualPxSize; - - setLineSpacing(lineSpacing * shadersettings.window_scaling); + setLineSpacing(lineSpacing); restartBlurredSource(); } Component.onCompleted: { @@ -157,10 +141,10 @@ Item{ var coord = correctDistortion(mouse.x, mouse.y); kterminal.mouseReleaseEvent(coord, mouse.button, mouse.modifiers); } - onPositionChanged: { - var coord = correctDistortion(mouse.x, mouse.y); - kterminal.mouseMoveEvent(coord, mouse.button, mouse.buttons, mouse.modifiers); - } + onPositionChanged: { + var coord = correctDistortion(mouse.x, mouse.y); + kterminal.mouseMoveEvent(coord, mouse.button, mouse.buttons, mouse.modifiers); + } //Frame displacement properties property real dtop: frame.item.displacementTop @@ -178,8 +162,8 @@ Item{ var cc = Qt.size(0.5 - x, 0.5 - y); var distortion = (cc.height * cc.height + cc.width * cc.width) * shadersettings.screen_distortion; - return Qt.point((x - cc.width * (1+distortion) * distortion) * width, - (y - cc.height * (1+distortion) * distortion) * height) + return Qt.point((x - cc.width * (1+distortion) * distortion) * kterminal.width, + (y - cc.height * (1+distortion) * distortion) * kterminal.height) } } ShaderEffectSource{ @@ -212,24 +196,24 @@ Item{ ShaderEffectSource{ id: finalSource sourceItem: blurredterminal - sourceRect: frame.sourceRect + //sourceRect: frame.sourceRect hideSource: true + //Smooth looks ugly when rasterization is used. + smooth: shadersettings.rasterization == shadersettings.no_rasterization } ShaderEffect { id: blurredterminal - anchors.fill: parent + anchors.fill: kterminal property variant source: source property variant blurredSource: (mBlur !== 0) ? blurredSource : undefined property real blurCoefficient: (1.0 - motionBlurCoefficient) * fpsAttenuation - property size virtual_resolution: parent.virtual_resolution - property size delta: Qt.size((mScanlines == shadersettings.pixel_rasterization ? deltax : 0), - mScanlines != shadersettings.no_rasterization ? deltay : 0) + property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) + blending: false fragmentShader: "uniform lowp float qt_Opacity;" + "uniform lowp sampler2D source;" + - "uniform highp vec2 delta;" + "varying highp vec2 qt_TexCoord0; @@ -246,13 +230,6 @@ Item{ "void main() {" + "vec2 coords = qt_TexCoord0;" + - (mScanlines != shadersettings.no_rasterization ? " - coords.y = floor(virtual_resolution.y * coords.y) / virtual_resolution.y;" + - (mScanlines == shadersettings.pixel_rasterization ? " - coords.x = floor(virtual_resolution.x * coords.x) / virtual_resolution.x;" : "") - : "") + - "coords = coords + delta;" + - "vec4 color = texture2D(source, coords) * 256.0; color.a = rgb2grey(color.rgb);" + @@ -291,7 +268,7 @@ Item{ sourceComponent: ShaderEffectSource{ sourceItem: bloomEffectLoader.item hideSource: true - sourceRect: frame.sourceRect + //sourceRect: frame.sourceRect smooth: false } } @@ -301,7 +278,7 @@ Item{ ShaderEffect { id: staticNoiseEffect anchors.fill: parent - property size virtual_resolution: terminalContainer.virtual_resolution + property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) blending: false @@ -332,9 +309,9 @@ Item{ return mix(s, n, inter.y); }" + - "void main() {" + - "gl_FragColor.a = smoothNoise(qt_TexCoord0 * virtual_resolution);" + - "}" + "void main() {" + + "gl_FragColor.a = smoothNoise(qt_TexCoord0 * virtual_resolution);" + + "}" onStatusChanged: if (log) console.log(log) //Print warning messages } @@ -350,77 +327,117 @@ Item{ // RASTERIZATION ////////////////////////////////////////////////////////// - ShaderEffect{ - id: rasterizationContainer - width: frame.sourceRect.width - height: frame.sourceRect.height - property size offset: Qt.size(width - rasterizationEffect.width, height - rasterizationEffect.height) - property size txtRes: Qt.size(width, height) +// ShaderEffect{ +// id: rasterizationContainer +// width: frame.sourceRect.width +// height: frame.sourceRect.height +// property size offset: Qt.size(width - rasterizationEffect.width, height - rasterizationEffect.height) +// property size txtRes: Qt.size(width, height) + +// blending: false + +// fragmentShader: +// "uniform lowp float qt_Opacity; +// uniform highp vec2 offset; +// uniform highp vec2 txtRes;" + + +// "varying highp vec2 qt_TexCoord0;" + + +// "void main() {" + +// "float color = 1.0; +// color *= smoothstep(0.0, offset.x / txtRes.x, qt_TexCoord0.x); +// color *= smoothstep(0.0, offset.y / txtRes.y, qt_TexCoord0.y); +// color *= smoothstep(0.0, offset.x / txtRes.x, 1.0 - qt_TexCoord0.x); +// color *= smoothstep(0.0, offset.y / txtRes.y, 1.0 - qt_TexCoord0.y);" + + +// "float distance = length(vec2(0.5) - qt_TexCoord0);" + +// "color = mix(color, 0.0, 1.2 * distance * distance);" + + +// "gl_FragColor.a = color;" + +// "}" + +// ShaderEffect { +// id: rasterizationEffect +// width: terminalContainer.width +// height: terminalContainer.height +// anchors.centerIn: parent +// property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) + +// blending: false + +// fragmentShader: +// "uniform lowp float qt_Opacity;" + + +// "varying highp vec2 qt_TexCoord0; +// uniform highp vec2 virtual_resolution; + +// float getScanlineIntensity(vec2 coords) { +// float result = 1.0;" + +// (mScanlines != shadersettings.no_rasterization ? +// "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + +// (mScanlines == shadersettings.pixel_rasterization ? +// "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " +// return result; +// }" + + +// "void main() {" + +// "float color = getScanlineIntensity(qt_TexCoord0);" + + +// "float distance = length(vec2(0.5) - qt_TexCoord0);" + +// "color = mix(color, 0.0, 1.2 * distance * distance);" + + +// "gl_FragColor.a = color;" + +// "}" + +// onStatusChanged: if (log) console.log(log) //Print warning messages +// } +// onStatusChanged: if (log) console.log(log) //Print warning messages +// } +// ShaderEffectSource{ +// id: rasterizationEffectSource +// sourceItem: rasterizationContainer +// hideSource: true +// smooth: true +// //format: ShaderEffectSource.Alpha +// } + ShaderEffect { + id: rasterizationEffect + width: parent.width * 2 + height: parent.height * 2 + property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) blending: false fragmentShader: - "uniform lowp float qt_Opacity; - uniform highp vec2 offset; - uniform highp vec2 txtRes;" + + "uniform lowp float qt_Opacity;" + - "varying highp vec2 qt_TexCoord0;" + + "varying highp vec2 qt_TexCoord0; + uniform highp vec2 virtual_resolution; - "void main() {" + - "float color = 1.0; - color *= smoothstep(0.0, offset.x / txtRes.x, qt_TexCoord0.x); - color *= smoothstep(0.0, offset.y / txtRes.y, qt_TexCoord0.y); - color *= smoothstep(0.0, offset.x / txtRes.x, 1.0 - qt_TexCoord0.x); - color *= smoothstep(0.0, offset.y / txtRes.y, 1.0 - qt_TexCoord0.y);" + + highp float getScanlineIntensity(vec2 coords) { + highp float result = 1.0;" + + (mScanlines != shadersettings.no_rasterization ? + "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + + (mScanlines == shadersettings.pixel_rasterization ? + "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " + return result; + }" + - "float distance = length(vec2(0.5) - qt_TexCoord0);" + - "color = mix(color, 0.0, 1.2 * distance * distance);" + + "void main() {" + + "highp float color = getScanlineIntensity(qt_TexCoord0);" + - "gl_FragColor.a = color;" + - "}" + "float distance = length(vec2(0.5) - qt_TexCoord0);" + + "color = mix(color, 0.0, 1.2 * distance * distance);" + - ShaderEffect { - id: rasterizationEffect - width: terminalContainer.width - height: terminalContainer.height - anchors.centerIn: parent - property size virtual_resolution: terminalContainer.virtual_resolution + "gl_FragColor.a = color;" + + "}" - blending: false - - fragmentShader: - "uniform lowp float qt_Opacity;" + - - "varying highp vec2 qt_TexCoord0; - uniform highp vec2 virtual_resolution; - - float getScanlineIntensity(vec2 coords) { - float result = 1.0;" + - (mScanlines != shadersettings.no_rasterization ? - "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + - (mScanlines == shadersettings.pixel_rasterization ? - "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " - return result; - }" + - - "void main() {" + - "float color = getScanlineIntensity(qt_TexCoord0);" + - - "float distance = length(vec2(0.5) - qt_TexCoord0);" + - "color = mix(color, 0.0, 1.2 * distance * distance);" + - - "gl_FragColor.a = color;" + - "}" - - onStatusChanged: if (log) console.log(log) //Print warning messages - } onStatusChanged: if (log) console.log(log) //Print warning messages } ShaderEffectSource{ id: rasterizationEffectSource - sourceItem: rasterizationContainer + sourceItem: rasterizationEffect hideSource: true smooth: true - //format: ShaderEffectSource.Alpha } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 531d91e..38a8496 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -21,6 +21,7 @@ import QtQuick 2.2 import QtGraphicalEffects 1.0 + ShaderEffect { property color font_color: shadersettings.font_color property color background_color: shadersettings.background_color @@ -103,8 +104,7 @@ ShaderEffect { uniform lowp float horizontal_sincronization;" : "") + " void main() { - qt_TexCoord0.x = -"+str(disp_left)+"/txt_Size.x + qt_MultiTexCoord0.x / ((txt_Size.x -("+str(disp_left+disp_right)+")) / txt_Size.x);" + " - qt_TexCoord0.y = -"+str(disp_top)+"/txt_Size.y + qt_MultiTexCoord0.y / ((txt_Size.y -("+str(disp_top+disp_bottom)+")) / txt_Size.y);" + " + qt_TexCoord0 = qt_MultiTexCoord0; vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" + (brightness_flickering !== 0.0 ? " brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * brightness_flickering;" diff --git a/app/qml/main.qml b/app/qml/main.qml index 9de405d..7b5ca04 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -148,8 +148,6 @@ ApplicationWindow{ width: parent.width * shadersettings.window_scaling height: parent.height * shadersettings.window_scaling scale: 1.0 / shadersettings.window_scaling - smooth: false - antialiasing: false opacity: shadersettings.windowOpacity * 0.3 + 0.7 Loader{ @@ -164,7 +162,6 @@ ApplicationWindow{ PreprocessedTerminal{ id: terminal anchors.fill: parent - anchors.margins: 30 } ShaderTerminal{ id: shadercontainer diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index ffa3d58..79e1617 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -87,7 +87,7 @@ const ColorEntry base_color_table[TABLE_COLORS] = // scroll increment used when dragging selection at top/bottom of window. // static -bool KTerminalDisplay::_antialiasText = true; +bool KTerminalDisplay::_antialiasText = false; bool KTerminalDisplay::HAVE_TRANSPARENCY = true; // we use this to force QPainter to display text in LTR mode -- 2.47.2 From c94e31f82a7861d5a3103c9e3bf07a1da72e47de Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 10 Sep 2014 01:14:10 +0200 Subject: [PATCH 074/477] Scaling is now unified among rasterizations. --- app/qml/ApplicationSettings.qml | 14 +++++++------- app/qml/FontPixels.qml | 6 ++---- app/qml/FontScanlines.qml | 6 ++---- app/qml/Fonts.qml | 6 ++---- app/qml/main.qml | 4 ++-- 5 files changed, 15 insertions(+), 21 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 308f9be..350bc41 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -117,17 +117,17 @@ Item{ } signal fontScalingChanged - property var fontScalingList: fontManager.item.fontScalingList - property var fontScalingIndexes: [5,1,1] + property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] + property int fontScalingIndex: 5 function setScalingIndex(newScaling){ - fontScalingIndexes[rasterization] = newScaling; + fontScalingIndex = newScaling; fontScalingChanged(); handleFontChanged(); } function getScalingIndex(){ - return fontScalingIndexes[rasterization]; + return fontScalingIndex; } property var fontIndexes: [0,0,0] @@ -136,7 +136,7 @@ Item{ function handleFontChanged(){ if(!fontManager.item) return; fontManager.item.selectedFontIndex = fontIndexes[rasterization]; - fontManager.item.selectedScalingIndex = fontScalingIndexes[rasterization]; + fontManager.item.scaling = fontScalingList[fontScalingIndex]; var fontSource = fontManager.item.source; var pixelSize = fontManager.item.pixelSize; @@ -164,7 +164,7 @@ Item{ fps: fps, window_scaling: window_scaling, show_terminal_size: show_terminal_size, - fontScalingIndexes: fontScalingIndexes, + fontScalingIndex: fontScalingIndex, fontIndexes: fontIndexes, frameReflections: _frameReflections, showMenubar: showMenubar @@ -231,7 +231,7 @@ Item{ window_scaling = settings.window_scaling !== undefined ? settings.window_scaling : window_scaling fontIndexes = settings.fontIndexes !== undefined ? settings.fontIndexes : fontIndexes - fontScalingIndexes = settings.fontScalingIndexes !== undefined ? settings.fontScalingIndexes : fontScalingIndexes + fontScalingIndex = settings.fontScalingIndex !== undefined ? settings.fontScalingIndex : fontScalingIndex _frameReflections = settings.frameReflections !== undefined ? settings.frameReflections : _frameReflections; diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml index c430bef..4c0afbd 100644 --- a/app/qml/FontPixels.qml +++ b/app/qml/FontPixels.qml @@ -22,15 +22,13 @@ import QtQuick 2.2 Item{ property int selectedFontIndex - property int selectedScalingIndex + property real scaling property alias fontlist: fontlist property var _font: fontlist.get(selectedFontIndex) - property var _scaling: fontScalingList[selectedScalingIndex] property var source: _font.source - property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] property int pixelSize: _font.pixelSize property int lineSpacing: _font.lineSpacing - property real screenScaling: _scaling * _font.baseScaling + property real screenScaling: scaling * _font.baseScaling ListModel{ id: fontlist diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml index c430bef..4c0afbd 100644 --- a/app/qml/FontScanlines.qml +++ b/app/qml/FontScanlines.qml @@ -22,15 +22,13 @@ import QtQuick 2.2 Item{ property int selectedFontIndex - property int selectedScalingIndex + property real scaling property alias fontlist: fontlist property var _font: fontlist.get(selectedFontIndex) - property var _scaling: fontScalingList[selectedScalingIndex] property var source: _font.source - property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] property int pixelSize: _font.pixelSize property int lineSpacing: _font.lineSpacing - property real screenScaling: _scaling * _font.baseScaling + property real screenScaling: scaling * _font.baseScaling ListModel{ id: fontlist diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml index d6df7ea..621251a 100644 --- a/app/qml/Fonts.qml +++ b/app/qml/Fonts.qml @@ -22,13 +22,11 @@ import QtQuick 2.2 Item{ property int selectedFontIndex - property int selectedScalingIndex + property real scaling property alias fontlist: fontlist property var source: fontlist.get(selectedFontIndex).source property var _font: fontlist.get(selectedFontIndex) - property var _scaling: fontScalingList[selectedScalingIndex] - property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] - property int pixelSize: _font.pixelSize * _scaling + property int pixelSize: _font.pixelSize * scaling property int lineSpacing: pixelSize * _font.lineSpacing property real screenScaling: 1.0 diff --git a/app/qml/main.qml b/app/qml/main.qml index 7b5ca04..47f42f2 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -83,7 +83,7 @@ ApplicationWindow{ text: qsTr("Zoom In") shortcut: "Ctrl++" onTriggered: { - var oldScaling = shadersettings.fontScalingIndexes[shadersettings.rasterization]; + var oldScaling = shadersettings.fontScalingIndex; var maxScalingIndex = shadersettings.fontScalingList.length - 1; shadersettings.setScalingIndex(Math.min(oldScaling + 1, maxScalingIndex)); } @@ -93,7 +93,7 @@ ApplicationWindow{ text: qsTr("Zoom Out") shortcut: "Ctrl+-" onTriggered: { - var oldScaling = shadersettings.fontScalingIndexes[shadersettings.rasterization]; + var oldScaling = shadersettings.fontScalingIndex; shadersettings.setScalingIndex(Math.max(oldScaling - 1, 0)); } } -- 2.47.2 From 7bd8b56657b5ebd9c663a087fb9937ad3e46df51 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 10 Sep 2014 01:47:07 +0200 Subject: [PATCH 075/477] Fix noise element sizes with different rasterizations. --- app/qml/PreprocessedTerminal.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 9302a6a..a3eeae4 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -278,7 +278,8 @@ Item{ ShaderEffect { id: staticNoiseEffect anchors.fill: parent - property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) + property real element_size: shadersettings.rasterization == shadersettings.no_rasterization ? 2 : 1 + property size virtual_resolution: Qt.size(kterminal.width / element_size, kterminal.height / element_size) blending: false -- 2.47.2 From eb413f79e4fad08aa241323f61734224eb889500 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Wed, 10 Sep 2014 01:47:46 +0200 Subject: [PATCH 076/477] Fix the look of the block cursor at low resolutions. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 79e1617..51fbd3d 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -2265,7 +2265,7 @@ void KTerminalDisplay::drawCursor(QPainter* painter, bool& invertCharacterColor) { QRectF cursorRect = rect; - cursorRect.setHeight(_fontHeight - _lineSpacing - 1); + cursorRect.setHeight(_fontHeight - _lineSpacing); if (!_cursorBlinking) { @@ -2280,8 +2280,8 @@ void KTerminalDisplay::drawCursor(QPainter* painter, // it is draw entirely inside 'rect' int penWidth = qMax(1,painter->pen().width()); - painter->drawRect(cursorRect.adjusted( penWidth/2, - penWidth/2, + painter->drawRect(cursorRect.adjusted( penWidth/2 + penWidth%2, + penWidth/2 + penWidth%2, - penWidth/2 - penWidth%2, - penWidth/2 - penWidth%2)); if ( hasFocus() ) -- 2.47.2 From 793106930248510f0dd43c65b3b46566cfd1ff99 Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Thu, 11 Sep 2014 17:08:06 +0200 Subject: [PATCH 077/477] Create cool-retro-term.appdata.xml First attempt in an AppStream metadata file according to http://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html To do: A "make-release" script that fills in version number, timestamp, and changelog. --- packaging/appdata/cool-retro-term.appdata.xml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 packaging/appdata/cool-retro-term.appdata.xml diff --git a/packaging/appdata/cool-retro-term.appdata.xml b/packaging/appdata/cool-retro-term.appdata.xml new file mode 100644 index 0000000..29029f8 --- /dev/null +++ b/packaging/appdata/cool-retro-term.appdata.xml @@ -0,0 +1,40 @@ + + + + cool-retro-term.desktop + MIT + GPL-3.0+ + Cool Retro Term + Terminal emulator with an old school look and feel + + +

    + cool-retro-term is a terminal emulator which tries to mimic the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. +

    +
    + + + + Default amber look + https://camo.githubusercontent.com/2443e662e95733ba6ae331f391f6ec036d1ee7fd/687474703a2f2f692e696d6775722e636f6d2f4e5566766e6c752e706e67 + + + Apple II look + https://camo.githubusercontent.com/44a19842d532555c7b02bf6b4b4684add9edf18c/687474703a2f2f692e696d6775722e636f6d2f4d4d6d4d3648742e706e67 + + + + https://github.com/Swordfish90/cool-retro-term + + + cool-retro-term + + + + + +

    First release

    +
    +
    +
    +
    -- 2.47.2 From 67ea080c2e0a34092b71d62dc488195e7ae9c10a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 13 Sep 2014 22:18:11 +0200 Subject: [PATCH 078/477] Great preprocessiong optimizations. Simpler code and big performance improvements. --- app/qml/PreprocessedTerminal.qml | 134 ++++++++++++++++--------------- app/qml/ShaderTerminal.qml | 31 ++++--- 2 files changed, 84 insertions(+), 81 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index a3eeae4..d0e114d 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -26,7 +26,7 @@ import org.crt.konsole 0.1 Item{ id: terminalContainer - property variant theSource: finalSource + property variant theSource: mBlur !== 0 ? blurredSourceLoader.item : kterminalSource property variant bloomSource: bloomSourceLoader.item property variant rasterizationSource: rasterizationEffectSource property variant staticNoiseSource: staticNoiseSource @@ -57,9 +57,8 @@ Item{ onMBlurChanged: restartBlurredSource() function restartBlurredSource(){ - if(!blurredSource) return; - blurredSource.live = true; - livetimer.restart() + if(!blurredSourceLoader.item) return; + blurredSourceLoader.item.restartBlurSource(); } function pasteClipboard(){ kterminal.pasteClipboard(); @@ -73,7 +72,6 @@ Item{ width: parent.width height: parent.height - smooth: false colorScheme: "cool-retro-term" session: KSession { @@ -167,83 +165,92 @@ Item{ } } ShaderEffectSource{ - id: source + id: kterminalSource sourceItem: kterminal hideSource: true smooth: false } - ShaderEffectSource{ - id: blurredSource - sourceItem: blurredterminal - recursive: true - live: false + Loader{ + id: blurredSourceLoader + active: mBlur !== 0 - hideSource: true + sourceComponent: ShaderEffectSource{ + id: _blurredSourceEffect + sourceItem: blurredTerminalLoader.item + recursive: true + live: false + hideSource: true + smooth: false - smooth: false - antialiasing: false + function restartBlurSource(){ + livetimer.restart(); + } - Timer{ - id: livetimer - running: true - onRunningChanged: running ? - timeManager.onTimeChanged.connect(blurredSource.scheduleUpdate) : - timeManager.onTimeChanged.disconnect(blurredSource.scheduleUpdate) + Timer{ + id: livetimer + running: true + onRunningChanged: { + running ? + timeBinding.target = timeManager : + timeBinding.target = null + } + } - Component.onCompleted: kterminal.updatedImage.connect(restart); + Connections{ + id: timeBinding + target: timeManager + onTimeChanged: { + _blurredSourceEffect.scheduleUpdate(); + } + } + + Connections{ + target: kterminal + onUpdatedImage:{ + livetimer.restart(); + } + } } } - ShaderEffectSource{ - id: finalSource - sourceItem: blurredterminal - //sourceRect: frame.sourceRect - hideSource: true - //Smooth looks ugly when rasterization is used. - smooth: shadersettings.rasterization == shadersettings.no_rasterization - } - ShaderEffect { - id: blurredterminal + + Loader{ + id: blurredTerminalLoader anchors.fill: kterminal - property variant source: source - property variant blurredSource: (mBlur !== 0) ? blurredSource : undefined - property real blurCoefficient: (1.0 - motionBlurCoefficient) * fpsAttenuation - property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) + active: mBlur !== 0 - blending: false + sourceComponent: ShaderEffect { + property variant txt_source: kterminalSource + property variant blurredSource: blurredSourceLoader.item + property real blurCoefficient: (1.0 - motionBlurCoefficient) * fpsAttenuation - fragmentShader: - "uniform lowp float qt_Opacity;" + - "uniform lowp sampler2D source;" + + blending: false - "varying highp vec2 qt_TexCoord0; + fragmentShader: + "uniform lowp float qt_Opacity;" + + "uniform lowp sampler2D txt_source;" + - uniform highp vec2 virtual_resolution;" + + "varying highp vec2 qt_TexCoord0; - (mBlur !== 0 ? - "uniform lowp sampler2D blurredSource; - uniform lowp float blurCoefficient;" - : "") + + uniform lowp sampler2D blurredSource; + uniform highp float blurCoefficient;" + - "float rgb2grey(vec3 v){ - return dot(v, vec3(0.21, 0.72, 0.04)); - }" + + "float rgb2grey(vec3 v){ + return dot(v, vec3(0.21, 0.72, 0.04)); + }" + - "void main() {" + - "vec2 coords = qt_TexCoord0;" + - "vec4 color = texture2D(source, coords) * 256.0; - color.a = rgb2grey(color.rgb);" + + "void main() {" + + "vec2 coords = qt_TexCoord0;" + + "vec3 color = texture2D(txt_source, coords).rgb * 256.0;" + - (mBlur !== 0 ? - "vec4 blur_color = texture2D(blurredSource, coords) * 256.0;" + - "blur_color.a = blur_color.a - blur_color.a * blurCoefficient;" + - "color = step(1.0, color.a) * color + step(color.a, 1.0) * blur_color;" - : "") + + "vec3 blur_color = texture2D(blurredSource, coords).rgb * 256.0;" + + "blur_color = blur_color - blur_color * blurCoefficient;" + + "color = step(vec3(1.0), color) * color + step(color, vec3(1.0)) * blur_color;" + + "gl_FragColor = vec4(floor(color) / 256.0, 1.0);" + + "}" - "gl_FragColor = floor(color) / 256.0;" + - "}" - - onStatusChanged: if (log) console.log(log) //Print warning messages + onStatusChanged: if (log) console.log(log) //Print warning messages + } } /////////////////////////////////////////////////////////////////////////// // EFFECTS ////////////////////////////////////////////////////////////// @@ -268,7 +275,6 @@ Item{ sourceComponent: ShaderEffectSource{ sourceItem: bloomEffectLoader.item hideSource: true - //sourceRect: frame.sourceRect smooth: false } } @@ -403,8 +409,8 @@ Item{ // } ShaderEffect { id: rasterizationEffect - width: parent.width * 2 - height: parent.height * 2 + width: parent.width + height: parent.height property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) blending: false diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 38a8496..42c59ed 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -41,7 +41,6 @@ ShaderEffect { property real glowing_line_strength: shadersettings.glowing_line_strength property real chroma_color: shadersettings.chroma_color; - property real saturation_color: shadersettings.saturation_color; property real rgb_shift: shadersettings.rgb_shift * 0.2 @@ -136,7 +135,7 @@ ShaderEffect { uniform lowp float bloom_strength;" : "") + (noise_strength !== 0 ? " uniform highp float noise_strength;" : "") + - (noise_strength !== 0 || jitter !== 0 ? " + (noise_strength !== 0 || jitter !== 0 || rgb_shift ? " uniform lowp sampler2D noiseSource;" : "") + (screen_distorsion !== 0 ? " uniform highp float screen_distorsion;" : "") + @@ -202,26 +201,24 @@ ShaderEffect { (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + + + "vec3 txt_color = texture2D(source, txt_coords).rgb; + float greyscale_color = rgb2grey(txt_color) + color;" + + (chroma_color !== 0 ? (rgb_shift !== 0 ? " float rgb_noise = abs(texture2D(noiseSource, vec2(fract(time/(1024.0 * 256.0)), fract(time/(1024.0*1024.0)))).a - 0.5); - vec4 realBackColor = texture2D(source, txt_coords); - vec2 rcolor = texture2D(source, txt_coords + vec2(0.1, 0.0) * rgb_shift * rgb_noise).ra; - vec2 bcolor = texture2D(source, txt_coords - vec2(0.1, 0.0) * rgb_shift * rgb_noise).ba; - realBackColor.r = rcolor.x; - realBackColor.b = bcolor.x; - realBackColor.a = 0.33 * (realBackColor.a + rcolor.y + bcolor.y);" - : - "vec4 realBackColor = texture2D(source, txt_coords);") + + float rcolor = texture2D(source, txt_coords + vec2(0.1, 0.0) * rgb_shift * rgb_noise).r; + float bcolor = texture2D(source, txt_coords - vec2(0.1, 0.0) * rgb_shift * rgb_noise).b; + txt_color.r = rcolor; + txt_color.b = bcolor; + greyscale_color = 0.33 * (rcolor + bcolor);" : "") + - "vec4 mixedColor = mix(font_color, realBackColor * font_color, chroma_color);" + - - "vec4 finalBackColor = mix(background_color, mixedColor, realBackColor.a);" + - "vec3 finalColor = mix(finalBackColor, font_color, color).rgb;" + "vec3 mixedColor = mix(font_color.rgb, txt_color * font_color.rgb, chroma_color); + vec3 finalBackColor = mix(background_color.rgb, mixedColor, greyscale_color); + vec3 finalColor = mix(finalBackColor, font_color.rgb, color).rgb;" : - "color += texture2D(source, txt_coords).a;" + - "vec3 finalColor = mix(background_color, font_color, color).rgb;" - ) + + "vec3 finalColor = mix(background_color.rgb, font_color.rgb, greyscale_color);") + "finalColor *= texture2D(rasterizationSource, coords).a;" + -- 2.47.2 From bc87df170b3f12cdcf88140edfece5a1f87e1b81 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 13 Sep 2014 23:19:00 +0200 Subject: [PATCH 079/477] Fix smooth, reenable antialising and remove few useless lines. --- app/qml/PreprocessedTerminal.qml | 7 +++---- app/qml/ShaderTerminal.qml | 2 -- konsole-qml-plugin/src/TerminalDisplay.cpp | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index d0e114d..8526246 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -45,8 +45,6 @@ Item{ property real _minBlurCoefficient: 0.70 property real _maxBlurCoefficient: 0.90 - property size virtualPxSize: Qt.size(1,1) - property real mBloom: shadersettings.bloom_strength property int mScanlines: shadersettings.rasterization onMScanlinesChanged: restartBlurredSource() @@ -168,7 +166,7 @@ Item{ id: kterminalSource sourceItem: kterminal hideSource: true - smooth: false + smooth: mScanlines == shadersettings.no_rasterization } Loader{ id: blurredSourceLoader @@ -180,7 +178,8 @@ Item{ recursive: true live: false hideSource: true - smooth: false + + smooth: mScanlines == shadersettings.no_rasterization function restartBlurSource(){ livetimer.restart(); diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 42c59ed..52d4e22 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -32,8 +32,6 @@ ShaderEffect { property size txt_Size: Qt.size(frame.sourceRect.width, frame.sourceRect.height) property real bloom_strength: shadersettings.bloom_strength * 2.5 - property int rasterization: shadersettings.rasterization - property real jitter: shadersettings.jitter * 0.007 property real noise_strength: shadersettings.noise_strength diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index 51fbd3d..e382199 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -87,7 +87,7 @@ const ColorEntry base_color_table[TABLE_COLORS] = // scroll increment used when dragging selection at top/bottom of window. // static -bool KTerminalDisplay::_antialiasText = false; +bool KTerminalDisplay::_antialiasText = true; bool KTerminalDisplay::HAVE_TRANSPARENCY = true; // we use this to force QPainter to display text in LTR mode -- 2.47.2 From b4bf29dc9e88af571c8f95406e02586b8875e7df Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 00:45:34 +0200 Subject: [PATCH 080/477] Resore frames functionalities. --- app/qml/PreprocessedTerminal.qml | 4 ++++ app/qml/ShaderTerminal.qml | 25 ++++++++++++++----------- app/qml/frames/BlackRoughFrame.qml | 19 ++++++++----------- app/qml/frames/NoFrame.qml | 3 --- app/qml/frames/WhiteSimpleFrame.qml | 11 ++++------- app/qml/frames/utils/TerminalFrame.qml | 9 --------- app/qml/main.qml | 3 --- 7 files changed, 30 insertions(+), 44 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 8526246..b60c932 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -167,6 +167,7 @@ Item{ sourceItem: kterminal hideSource: true smooth: mScanlines == shadersettings.no_rasterization + wrapMode: ShaderEffectSource.ClampToEdge } Loader{ id: blurredSourceLoader @@ -178,6 +179,7 @@ Item{ recursive: true live: false hideSource: true + wrapMode: kterminalSource.wrapMode smooth: mScanlines == shadersettings.no_rasterization @@ -275,6 +277,7 @@ Item{ sourceItem: bloomEffectLoader.item hideSource: true smooth: false + wrapMode: ShaderEffectSource.ClampToEdge } } @@ -445,5 +448,6 @@ Item{ sourceItem: rasterizationEffect hideSource: true smooth: true + wrapMode: ShaderEffectSource.Repeat } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 52d4e22..7f00af7 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -29,7 +29,6 @@ ShaderEffect { property variant bloomSource: terminal.bloomSource property variant rasterizationSource: terminal.rasterizationSource property variant noiseSource: terminal.staticNoiseSource - property size txt_Size: Qt.size(frame.sourceRect.width, frame.sourceRect.height) property real bloom_strength: shadersettings.bloom_strength * 2.5 property real jitter: shadersettings.jitter * 0.007 @@ -47,10 +46,10 @@ ShaderEffect { property bool frameReflections: shadersettings.frameReflections - property real disp_top: frame.item.displacementTop * shadersettings.window_scaling - property real disp_bottom: frame.item.displacementBottom * shadersettings.window_scaling - property real disp_left: frame.item.displacementLeft * shadersettings.window_scaling - property real disp_right: frame.item.displacementRight * shadersettings.window_scaling + property real disp_top: frame.item.displacementTop / height + property real disp_bottom: frame.item.displacementBottom / height + property real disp_left: frame.item.displacementLeft / width + property real disp_right: frame.item.displacementRight / width property real screen_brightness: shadersettings.brightness * 1.5 + 0.5 @@ -86,7 +85,11 @@ ShaderEffect { uniform highp mat4 qt_Matrix; uniform highp float time; uniform sampler2D randomFunctionSource; - uniform highp vec2 txt_Size; + + uniform highp float disp_left; + uniform highp float disp_right; + uniform highp float disp_top; + uniform highp float disp_bottom; attribute highp vec4 qt_Vertex; attribute highp vec2 qt_MultiTexCoord0; @@ -101,7 +104,8 @@ ShaderEffect { uniform lowp float horizontal_sincronization;" : "") + " void main() { - qt_TexCoord0 = qt_MultiTexCoord0; + qt_TexCoord0.x = -disp_left + qt_MultiTexCoord0.x * (1.0 + disp_left + disp_right); + qt_TexCoord0.y = -disp_top + qt_MultiTexCoord0.y * (1.0 + disp_top + disp_bottom); vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" + (brightness_flickering !== 0.0 ? " brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * brightness_flickering;" @@ -120,7 +124,6 @@ ShaderEffect { uniform sampler2D source; uniform highp float qt_Opacity; uniform highp float time; - uniform highp vec2 txt_Size; varying highp vec2 qt_TexCoord0; uniform highp vec4 font_color; @@ -172,9 +175,9 @@ ShaderEffect { :" vec2 coords = qt_TexCoord0;") + - (frameReflections ? " - vec2 inside = step(0.0, coords) - step(1.0, coords); - coords = abs(mod(floor(coords), 2.0) - fract(coords)) * clamp(inside.x + inside.y, 0.0, 1.0);" : "") + +// (frameReflections ? " +// vec2 inside = step(0.0, coords) - step(1.0, coords); +// coords = abs(mod(floor(coords), 2.0) - fract(coords)) * clamp(inside.x + inside.y, 0.0, 1.0);" : "") + (horizontal_sincronization !== 0 ? " float h_distortion = 0.5 * sin(time*0.001 + coords.y*10.0*fract(time/10.0)); diff --git a/app/qml/frames/BlackRoughFrame.qml b/app/qml/frames/BlackRoughFrame.qml index 7bc688a..8661cd7 100644 --- a/app/qml/frames/BlackRoughFrame.qml +++ b/app/qml/frames/BlackRoughFrame.qml @@ -7,22 +7,19 @@ TerminalFrame{ anchors.fill: parent addedWidth: 200 addedHeight: 370 - borderLeft: 148 - borderRight: 148 - borderTop: 232 - borderBottom: 232 + borderLeft: 170 + borderRight: 170 + borderTop: 250 + borderBottom: 250 imageSource: "../images/black-frame.png" normalsSource: "../images/black-frame-normals.png" - rectX: 20 - rectY: 20 - distortionCoefficient: 1.9 - displacementLeft: 70.0 - displacementTop: 55.0 - displacementRight: 50.0 - displacementBottom: 38.0 + displacementLeft: 80.0 + displacementTop: 65.0 + displacementRight: 80.0 + displacementBottom: 65.0 shaderString: "FrameShader.qml" } diff --git a/app/qml/frames/NoFrame.qml b/app/qml/frames/NoFrame.qml index 806e437..e594158 100644 --- a/app/qml/frames/NoFrame.qml +++ b/app/qml/frames/NoFrame.qml @@ -12,9 +12,6 @@ TerminalFrame{ borderTop: 0 borderBottom: 0 - rectX: 15 - rectY: 15 - displacementLeft: 0 displacementTop: 0 displacementRight: 0 diff --git a/app/qml/frames/WhiteSimpleFrame.qml b/app/qml/frames/WhiteSimpleFrame.qml index 207e869..0231c40 100644 --- a/app/qml/frames/WhiteSimpleFrame.qml +++ b/app/qml/frames/WhiteSimpleFrame.qml @@ -14,15 +14,12 @@ TerminalFrame{ imageSource: "../images/screen-frame.png" normalsSource: "../images/screen-frame-normals.png" - rectX: 15 - rectY: 15 - distortionCoefficient: 1.5 - displacementLeft: 45 - displacementTop: 40 - displacementRight: 38.0 - displacementBottom: 28.0 + displacementLeft: 55 + displacementTop: 50 + displacementRight: 55 + displacementBottom: 50 shaderString: "FrameShader.qml" } diff --git a/app/qml/frames/utils/TerminalFrame.qml b/app/qml/frames/utils/TerminalFrame.qml index 3c0b9b1..0232702 100644 --- a/app/qml/frames/utils/TerminalFrame.qml +++ b/app/qml/frames/utils/TerminalFrame.qml @@ -15,10 +15,6 @@ Item{ property string normalsSource property string shaderString - //Value used to create the rect used to add the border to the texture - property real rectX - property real rectY - //Values used to displace the texture in the screen. Used to make reflections correct. property real displacementLeft property real displacementTop @@ -27,11 +23,6 @@ Item{ property real distortionCoefficient - property rect sourceRect: Qt.rect(-rectX * shadersettings.window_scaling, - -rectY * shadersettings.window_scaling, - terminal.width + 2*rectX * shadersettings.window_scaling, - terminal.height + 2*rectY * shadersettings.window_scaling) - BorderImage{ id: frameimage anchors.centerIn: parent diff --git a/app/qml/main.qml b/app/qml/main.qml index 47f42f2..4071404 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -153,9 +153,6 @@ ApplicationWindow{ Loader{ id: frame anchors.fill: parent - - property rect sourceRect: item.sourceRect - z: 2.1 source: shadersettings.frame_source } -- 2.47.2 From 53897f818603b43057a0e796ad0a36d99b078885 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 01:00:38 +0200 Subject: [PATCH 081/477] Fix: bloom issues near the edges. --- app/qml/PreprocessedTerminal.qml | 2 ++ app/qml/ShaderTerminal.qml | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index b60c932..19b6f5f 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -278,6 +278,8 @@ Item{ hideSource: true smooth: false wrapMode: ShaderEffectSource.ClampToEdge + //sourceRect is needed because FastBlur expands slightly outside the rectangle + sourceRect: Qt.rect(-1, -1, sourceItem.width + 2, sourceItem.height + 2) } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 7f00af7..1392dd4 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -224,12 +224,14 @@ ShaderEffect { "finalColor *= texture2D(rasterizationSource, coords).a;" + (bloom_strength !== 0 ? - "vec3 bloomColor = texture2D(bloomSource, coords).rgb;" + + "vec4 bloomFullColor = texture2D(bloomSource, coords); + vec3 bloomColor = bloomFullColor.rgb; + float bloomAlpha = bloomFullColor.a;" + (chroma_color !== 0 ? "bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chroma_color);" : "bloomColor = font_color.rgb * rgb2grey(bloomColor);") + - "finalColor += bloomColor * bloom_strength;" + "finalColor += bloomColor * bloom_strength * bloomAlpha;" : "") + (brightness_flickering !== 0 ? " -- 2.47.2 From d1280f28c2f00181b073f31f40d463994f65ce8b Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 01:02:54 +0200 Subject: [PATCH 082/477] Use qFloor instead of qRound to compute the number of columns of the terminal. --- konsole-qml-plugin/src/TerminalDisplay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.cpp b/konsole-qml-plugin/src/TerminalDisplay.cpp index e382199..484207f 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.cpp +++ b/konsole-qml-plugin/src/TerminalDisplay.cpp @@ -1996,7 +1996,7 @@ void KTerminalDisplay::calcGeometry() _contentHeight = height() - 2 * DEFAULT_TOP_MARGIN + /* mysterious */ 1; // ensure that display is always at least one column wide - _columns = qMax(1, qRound(_contentWidth / _fontWidth)); + _columns = qMax(1, qFloor(_contentWidth / _fontWidth)); _usedColumns = qMin(_usedColumns,_columns); // ensure that display is always at least one line high -- 2.47.2 From 2dbe1298578fe2e940e4d7d3bd7600768c54f6e8 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 01:14:12 +0200 Subject: [PATCH 083/477] Remove unused code and fix some indentations. --- app/qml/PreprocessedTerminal.qml | 106 +++++-------------------------- app/qml/ShaderTerminal.qml | 4 -- 2 files changed, 17 insertions(+), 93 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 19b6f5f..088e5fc 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -333,84 +333,10 @@ Item{ wrapMode: ShaderEffectSource.Repeat smooth: true hideSource: true - //format: ShaderEffectSource.Alpha } // RASTERIZATION ////////////////////////////////////////////////////////// -// ShaderEffect{ -// id: rasterizationContainer -// width: frame.sourceRect.width -// height: frame.sourceRect.height -// property size offset: Qt.size(width - rasterizationEffect.width, height - rasterizationEffect.height) -// property size txtRes: Qt.size(width, height) - -// blending: false - -// fragmentShader: -// "uniform lowp float qt_Opacity; -// uniform highp vec2 offset; -// uniform highp vec2 txtRes;" + - -// "varying highp vec2 qt_TexCoord0;" + - -// "void main() {" + -// "float color = 1.0; -// color *= smoothstep(0.0, offset.x / txtRes.x, qt_TexCoord0.x); -// color *= smoothstep(0.0, offset.y / txtRes.y, qt_TexCoord0.y); -// color *= smoothstep(0.0, offset.x / txtRes.x, 1.0 - qt_TexCoord0.x); -// color *= smoothstep(0.0, offset.y / txtRes.y, 1.0 - qt_TexCoord0.y);" + - -// "float distance = length(vec2(0.5) - qt_TexCoord0);" + -// "color = mix(color, 0.0, 1.2 * distance * distance);" + - -// "gl_FragColor.a = color;" + -// "}" - -// ShaderEffect { -// id: rasterizationEffect -// width: terminalContainer.width -// height: terminalContainer.height -// anchors.centerIn: parent -// property size virtual_resolution: Qt.size(kterminal.width, kterminal.height) - -// blending: false - -// fragmentShader: -// "uniform lowp float qt_Opacity;" + - -// "varying highp vec2 qt_TexCoord0; -// uniform highp vec2 virtual_resolution; - -// float getScanlineIntensity(vec2 coords) { -// float result = 1.0;" + -// (mScanlines != shadersettings.no_rasterization ? -// "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + -// (mScanlines == shadersettings.pixel_rasterization ? -// "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " -// return result; -// }" + - -// "void main() {" + -// "float color = getScanlineIntensity(qt_TexCoord0);" + - -// "float distance = length(vec2(0.5) - qt_TexCoord0);" + -// "color = mix(color, 0.0, 1.2 * distance * distance);" + - -// "gl_FragColor.a = color;" + -// "}" - -// onStatusChanged: if (log) console.log(log) //Print warning messages -// } -// onStatusChanged: if (log) console.log(log) //Print warning messages -// } -// ShaderEffectSource{ -// id: rasterizationEffectSource -// sourceItem: rasterizationContainer -// hideSource: true -// smooth: true -// //format: ShaderEffectSource.Alpha -// } ShaderEffect { id: rasterizationEffect width: parent.width @@ -423,25 +349,27 @@ Item{ "uniform lowp float qt_Opacity;" + "varying highp vec2 qt_TexCoord0; - uniform highp vec2 virtual_resolution; + uniform highp vec2 virtual_resolution; - highp float getScanlineIntensity(vec2 coords) { - highp float result = 1.0;" + - (mScanlines != shadersettings.no_rasterization ? - "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + - (mScanlines == shadersettings.pixel_rasterization ? - "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " - return result; - }" + + highp float getScanlineIntensity(vec2 coords) { + highp float result = 1.0;" + - "void main() {" + - "highp float color = getScanlineIntensity(qt_TexCoord0);" + + (mScanlines != shadersettings.no_rasterization ? + "result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") + + (mScanlines == shadersettings.pixel_rasterization ? + "result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + " - "float distance = length(vec2(0.5) - qt_TexCoord0);" + - "color = mix(color, 0.0, 1.2 * distance * distance);" + + return result; + }" + - "gl_FragColor.a = color;" + - "}" + "void main() {" + + "highp float color = getScanlineIntensity(qt_TexCoord0);" + + + "float distance = length(vec2(0.5) - qt_TexCoord0);" + + "color = mix(color, 0.0, 1.2 * distance * distance);" + + + "gl_FragColor.a = color;" + + "}" onStatusChanged: if (log) console.log(log) //Print warning messages } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 1392dd4..5dec687 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -175,10 +175,6 @@ ShaderEffect { :" vec2 coords = qt_TexCoord0;") + -// (frameReflections ? " -// vec2 inside = step(0.0, coords) - step(1.0, coords); -// coords = abs(mod(floor(coords), 2.0) - fract(coords)) * clamp(inside.x + inside.y, 0.0, 1.0);" : "") + - (horizontal_sincronization !== 0 ? " float h_distortion = 0.5 * sin(time*0.001 + coords.y*10.0*fract(time/10.0)); h_distortion += 0.5 * cos(time*0.04 + 0.03 + coords.y*50.0*fract(time/10.0 + 0.4)); -- 2.47.2 From 1be7987abebcfa0abd2253216581a00317c63e33 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 02:43:48 +0200 Subject: [PATCH 084/477] Terminal size and texture sizes are now comparable. Fixed formula for coordinates conversion: mouse input is now pixel perfect. --- app/qml/PreprocessedTerminal.qml | 21 ++++++++++++--------- app/qml/ShaderTerminal.qml | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 088e5fc..d71672e 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -26,6 +26,18 @@ import org.crt.konsole 0.1 Item{ id: terminalContainer + + //Frame displacement properties. This makes the terminal the same size of the texture. + property real dtop: frame.item.displacementTop + property real dleft:frame.item.displacementLeft + property real dright: frame.item.displacementRight + property real dbottom: frame.item.displacementBottom + + anchors.leftMargin: dleft + anchors.rightMargin: dright + anchors.topMargin: dtop + anchors.bottomMargin: dbottom + property variant theSource: mBlur !== 0 ? blurredSourceLoader.item : kterminalSource property variant bloomSource: bloomSourceLoader.item property variant rasterizationSource: rasterizationEffectSource @@ -142,19 +154,10 @@ Item{ kterminal.mouseMoveEvent(coord, mouse.button, mouse.buttons, mouse.modifiers); } - //Frame displacement properties - property real dtop: frame.item.displacementTop - property real dleft:frame.item.displacementLeft - property real dright: frame.item.displacementRight - property real dbottom: frame.item.displacementBottom - function correctDistortion(x, y){ x = x / width; y = y / height; - x = (-dleft + x * (width + dleft + dright)) / width - y = (-dtop + y * (height + dtop + dbottom)) / height - var cc = Qt.size(0.5 - x, 0.5 - y); var distortion = (cc.height * cc.height + cc.width * cc.width) * shadersettings.screen_distortion; diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 5dec687..72360cf 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -104,8 +104,8 @@ ShaderEffect { uniform lowp float horizontal_sincronization;" : "") + " void main() { - qt_TexCoord0.x = -disp_left + qt_MultiTexCoord0.x * (1.0 + disp_left + disp_right); - qt_TexCoord0.y = -disp_top + qt_MultiTexCoord0.y * (1.0 + disp_top + disp_bottom); + qt_TexCoord0.x = (qt_MultiTexCoord0.x - disp_left) / (1.0 - disp_left - disp_right); + qt_TexCoord0.y = (qt_MultiTexCoord0.y - disp_top) / (1.0 - disp_top - disp_bottom); vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" + (brightness_flickering !== 0.0 ? " brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * brightness_flickering;" -- 2.47.2 From 19f6d85243545ef488ceea02b66ae45393843006 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 14 Sep 2014 12:20:49 +0200 Subject: [PATCH 085/477] Real fix to bloom borders issues. Using Connections to update main source instead of live: true. --- app/qml/PreprocessedTerminal.qml | 20 +++++++++++++------- app/qml/ShaderTerminal.qml | 4 +++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index d71672e..d6bbd0c 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -171,6 +171,17 @@ Item{ hideSource: true smooth: mScanlines == shadersettings.no_rasterization wrapMode: ShaderEffectSource.ClampToEdge + live: false + + signal sourceUpdate + + Connections{ + target: kterminal + onUpdatedImage:{ + kterminalSource.scheduleUpdate(); + kterminalSource.sourceUpdate(); + } + } } Loader{ id: blurredSourceLoader @@ -199,7 +210,6 @@ Item{ timeBinding.target = null } } - Connections{ id: timeBinding target: timeManager @@ -207,10 +217,9 @@ Item{ _blurredSourceEffect.scheduleUpdate(); } } - Connections{ - target: kterminal - onUpdatedImage:{ + target: kterminalSource + onSourceUpdate:{ livetimer.restart(); } } @@ -280,9 +289,6 @@ Item{ sourceItem: bloomEffectLoader.item hideSource: true smooth: false - wrapMode: ShaderEffectSource.ClampToEdge - //sourceRect is needed because FastBlur expands slightly outside the rectangle - sourceRect: Qt.rect(-1, -1, sourceItem.width + 2, sourceItem.height + 2) } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 72360cf..dc30bbd 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -222,7 +222,9 @@ ShaderEffect { (bloom_strength !== 0 ? "vec4 bloomFullColor = texture2D(bloomSource, coords); vec3 bloomColor = bloomFullColor.rgb; - float bloomAlpha = bloomFullColor.a;" + + vec2 minBound = step(vec2(0.0), coords); + vec2 maxBound = step(coords, vec2(1.0)); + float bloomAlpha = bloomFullColor.a * minBound.x * minBound.y * maxBound.x * maxBound.y;" + (chroma_color !== 0 ? "bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chroma_color);" : -- 2.47.2 From 82df40591bbc31f8e1e457a6e2c0068959fcdd2f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 18 Sep 2014 10:33:40 +0200 Subject: [PATCH 086/477] Workaround for menubar margins. --- app/qml/main.qml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/qml/main.qml b/app/qml/main.qml index 4071404..4e96aee 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -36,6 +36,9 @@ ApplicationWindow{ property bool fullscreen: shadersettings.fullscreen onFullscreenChanged: visibility = (fullscreen ? Window.FullScreen : Window.Windowed) + //Workaround: if menubar is assigned ugly margins are visible. + menuBar: shadersettings.showMenubar ? defaultMenuBar : null + flags: Qt.WA_TranslucentBackground color: "#00000000" title: qsTr("cool-retro-term") @@ -104,9 +107,8 @@ ApplicationWindow{ aboutDialog.show(); } } - - menuBar: MenuBar { - id: menubar + MenuBar { + id: defaultMenuBar Menu { title: qsTr("File") visible: shadersettings.showMenubar -- 2.47.2 From d2b677a0e237c8e9d6ef7f8e92a6fd29f5057620 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 20 Sep 2014 00:19:05 +0200 Subject: [PATCH 087/477] Adding profiles menu. --- app/qml/main.qml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/qml/main.qml b/app/qml/main.qml index 4e96aee..655854f 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -131,6 +131,22 @@ ApplicationWindow{ MenuItem {action: zoomIn} MenuItem {action: zoomOut} } + Menu{ + id: profilesMenu + title: qsTr("Profiles") + Instantiator{ + model: shadersettings.profiles_list + delegate: MenuItem { + text: model.text + onTriggered: { + shadersettings.loadProfileString(obj_string); + shadersettings.handleFontChanged(); + } + } + onObjectAdded: profilesMenu.insertItem(index, object) + onObjectRemoved: profilesMenu.removeItem(object) + } + } Menu{ title: qsTr("Help") visible: shadersettings.showMenubar -- 2.47.2 From 1febce377517db2af66b1a35d26615aef0a9ee27 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 20 Sep 2014 02:26:21 +0200 Subject: [PATCH 088/477] Add menubar in context menu when the application menubar is hidden. --- app/qml/CRTMainMenuBar.qml | 51 ++++++++++++++++++++++++++++++++ app/qml/PreprocessedTerminal.qml | 3 +- app/qml/main.qml | 45 +--------------------------- app/qml/resources.qrc | 2 +- 4 files changed, 55 insertions(+), 46 deletions(-) create mode 100644 app/qml/CRTMainMenuBar.qml diff --git a/app/qml/CRTMainMenuBar.qml b/app/qml/CRTMainMenuBar.qml new file mode 100644 index 0000000..3fd4dec --- /dev/null +++ b/app/qml/CRTMainMenuBar.qml @@ -0,0 +1,51 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +MenuBar { + id: defaultMenuBar + property bool visible: true + Menu { + title: qsTr("File") + visible: defaultMenuBar.visible + MenuItem {action: quitAction} + } + Menu { + title: qsTr("Edit") + visible: defaultMenuBar.visible + MenuItem {action: copyAction} + MenuItem {action: pasteAction} + MenuSeparator{} + MenuItem {action: showsettingsAction} + } + Menu{ + title: qsTr("View") + visible: defaultMenuBar.visible + MenuItem {action: fullscreenAction} + MenuItem {action: showMenubarAction} + MenuSeparator{} + MenuItem {action: zoomIn} + MenuItem {action: zoomOut} + } + Menu{ + id: profilesMenu + title: qsTr("Profiles") + visible: defaultMenuBar.visible + Instantiator{ + model: shadersettings.profiles_list + delegate: MenuItem { + text: model.text + onTriggered: { + shadersettings.loadProfileString(obj_string); + shadersettings.handleFontChanged(); + } + } + onObjectAdded: profilesMenu.insertItem(index, object) + onObjectRemoved: profilesMenu.removeItem(object) + } + } + Menu{ + title: qsTr("Help") + visible: defaultMenuBar.visible + MenuItem {action: showAboutAction} + } +} diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index d6bbd0c..3e4bda7 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -114,12 +114,13 @@ Item{ } Menu{ id: contextmenu - MenuItem{action: copyAction} MenuItem{action: pasteAction} MenuSeparator{} MenuItem{action: fullscreenAction} MenuItem{action: showMenubarAction} + MenuSeparator{visible: !shadersettings.showMenubar} + CRTMainMenuBar{visible: !shadersettings.showMenubar} } MouseArea{ acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton diff --git a/app/qml/main.qml b/app/qml/main.qml index 655854f..96bf53e 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -107,51 +107,8 @@ ApplicationWindow{ aboutDialog.show(); } } - MenuBar { + CRTMainMenuBar{ id: defaultMenuBar - Menu { - title: qsTr("File") - visible: shadersettings.showMenubar - MenuItem {action: quitAction} - } - Menu { - title: qsTr("Edit") - visible: shadersettings.showMenubar - MenuItem {action: copyAction} - MenuItem {action: pasteAction} - MenuSeparator{} - MenuItem {action: showsettingsAction} - } - Menu{ - title: qsTr("View") - visible: shadersettings.showMenubar - MenuItem {action: fullscreenAction} - MenuItem {action: showMenubarAction} - MenuSeparator{} - MenuItem {action: zoomIn} - MenuItem {action: zoomOut} - } - Menu{ - id: profilesMenu - title: qsTr("Profiles") - Instantiator{ - model: shadersettings.profiles_list - delegate: MenuItem { - text: model.text - onTriggered: { - shadersettings.loadProfileString(obj_string); - shadersettings.handleFontChanged(); - } - } - onObjectAdded: profilesMenu.insertItem(index, object) - onObjectRemoved: profilesMenu.removeItem(object) - } - } - Menu{ - title: qsTr("Help") - visible: shadersettings.showMenubar - MenuItem {action: showAboutAction} - } } ApplicationSettings{ id: shadersettings diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index 1650e35..a9df1ff 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -63,6 +63,6 @@ fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf fonts/1985-ibm-pc-vga/dos437.txt Storage.qml + CRTMainMenuBar.qml - -- 2.47.2 From 4b87b6e5d6c60bd8c17352cabfdc47d157d0b317 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 23 Sep 2014 10:45:48 +0200 Subject: [PATCH 089/477] Fix: update terminal image on resize and font change. --- app/qml/PreprocessedTerminal.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 3e4bda7..5d6118a 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -93,6 +93,9 @@ Item{ } } + onWidthChanged: update(); + onHeightChanged: update(); + FontLoader{ id: fontLoader } Text{id: fontMetrics; text: "B"; visible: false} @@ -105,6 +108,7 @@ Item{ height = Qt.binding(function() {return Math.floor(terminalContainer.height / screenScaling);}); setLineSpacing(lineSpacing); + update(); restartBlurredSource(); } Component.onCompleted: { -- 2.47.2 From 9caae00db95ff6b158f9d986c56434a7c1628914 Mon Sep 17 00:00:00 2001 From: Greg Meyer Date: Sun, 28 Sep 2014 02:47:34 -0400 Subject: [PATCH 090/477] adds compiled files to the gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 8204296..db0327d 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,7 @@ Makefile* # Ubuntu SDk *.excludes *.json + +# Excludes compiled files +imports +cool-retro-term -- 2.47.2 From a08c738a65cf4efd7f4f8078ef38e198f06962db Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 28 Sep 2014 18:23:14 +0200 Subject: [PATCH 091/477] Font width is customizable. Introducing non squared pixels resolutions. --- app/qml/ApplicationSettings.qml | 3 +++ app/qml/FontPixels.qml | 7 ------- app/qml/FontScanlines.qml | 7 ------- app/qml/PreprocessedTerminal.qml | 4 +++- app/qml/SettingsTerminalTab.qml | 15 +++++++++++++++ app/qml/SettingsWindow.qml | 2 +- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 350bc41..9ee4ecc 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -120,6 +120,9 @@ Item{ property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] property int fontScalingIndex: 5 + property real fontWidth: 1.0 + onFontWidthChanged: handleFontChanged(); + function setScalingIndex(newScaling){ fontScalingIndex = newScaling; fontScalingChanged(); diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml index 4c0afbd..9f5143f 100644 --- a/app/qml/FontPixels.qml +++ b/app/qml/FontPixels.qml @@ -32,13 +32,6 @@ Item{ ListModel{ id: fontlist - ListElement{ - text: "Commodore PET 2Y (1977)" - source: "fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf" - lineSpacing: 2 - pixelSize: 16 - baseScaling: 3.0 - } ListElement{ text: "Commodore PET (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml index 4c0afbd..9f5143f 100644 --- a/app/qml/FontScanlines.qml +++ b/app/qml/FontScanlines.qml @@ -32,13 +32,6 @@ Item{ ListModel{ id: fontlist - ListElement{ - text: "Commodore PET 2Y (1977)" - source: "fonts/1977-commodore-pet/COMMODORE_PET_2y.ttf" - lineSpacing: 2 - pixelSize: 16 - baseScaling: 3.0 - } ListElement{ text: "Commodore PET (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 5d6118a..4fcc4b1 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -104,7 +104,9 @@ Item{ font.pixelSize = pixelSize; font.family = fontLoader.name; - width = Qt.binding(function() {return Math.floor(terminalContainer.width / screenScaling);}); + var fontWidth = 1.0 / shadersettings.fontWidth; + + width = Qt.binding(function() {return Math.floor(fontWidth * terminalContainer.width / screenScaling);}); height = Qt.binding(function() {return Math.floor(terminalContainer.height / screenScaling);}); setLineSpacing(lineSpacing); diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index 22c6084..2b2dcc8 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -87,6 +87,21 @@ Tab{ text: shadersettings.fontScalingList[scalingChanger.value].toFixed(2) } } + Text{ text: qsTr("Font Width") } + RowLayout{ + Layout.fillWidth: true + Slider{ + Layout.fillWidth: true + id: widthChanger + onValueChanged: shadersettings.fontWidth = value; + value: shadersettings.fontWidth + stepSize: 0.05 + Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 + } + Text{ + text: Math.round(widthChanger.value * 100) + "%" + } + } } } GroupBox{ diff --git a/app/qml/SettingsWindow.qml b/app/qml/SettingsWindow.qml index e7ab486..a121bcc 100644 --- a/app/qml/SettingsWindow.qml +++ b/app/qml/SettingsWindow.qml @@ -28,7 +28,7 @@ Window { id: settings_window title: qsTr("Settings") width: 640 - height: 450 + height: 480 property int tabmargins: 15 -- 2.47.2 From d885f27e0b0fbfa694383597665853cf49567bf4 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 29 Sep 2014 01:41:43 +0200 Subject: [PATCH 092/477] Font width is now stored and loaded. Profiles have been updated. --- app/qml/ApplicationSettings.qml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 9ee4ecc..037920d 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -196,7 +196,8 @@ Item{ contrast: contrast, ambient_light: ambient_light, windowOpacity: windowOpacity, - fontIndex: fontIndexes[rasterization] + fontIndex: fontIndexes[rasterization], + fontWidth: fontWidth } return JSON.stringify(settings); } @@ -272,6 +273,7 @@ Item{ windowOpacity = settings.windowOpacity !== undefined ? settings.windowOpacity : windowOpacity; fontIndexes[rasterization] = settings.fontIndex !== undefined ? settings.fontIndex : fontIndexes[rasterization]; + fontWidth = settings.fontWidth !== undefined ? settings.fontWidth : fontWidth; } function storeCustomProfiles(){ @@ -323,47 +325,47 @@ Item{ id: profileslist ListElement{ text: "Default Amber" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.65,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.4,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Default Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.08,"jitter":0.18,"motion_blur":0.45,"noise_strength":0.1,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Default Scanlines" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#00ff5b","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.07,"jitter":0.11,"motion_blur":0.4,"noise_strength":0.05,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Default Pixelated" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.1,"contrast":0.85,"fontIndex":0,"font_color":"#ff8100","frames_index":1,"glowing_line_strength":0.2,"horizontal_sincronization":0.1,"jitter":0,"motion_blur":0.45,"noise_strength":0.14,"rasterization":2,"screen_distortion":0.05,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Apple ][" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.5,"brightness":0.5,"brightness_flickering":0.2,"contrast":0.85,"fontIndex":2,"font_color":"#2fff91","frames_index":1,"glowing_line_strength":0.22,"horizontal_sincronization":0.08,"jitter":0.1,"motion_blur":0.65,"noise_strength":0.08,"rasterization":1,"screen_distortion":0.18,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Vintage" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.54,"contrast":0.85,"fontIndex":0,"font_color":"#00ff3e","frames_index":2,"glowing_line_strength":0.3,"horizontal_sincronization":0.2,"jitter":0.4,"motion_blur":0.75,"noise_strength":0.2,"rasterization":1,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "IBM Dos" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1,"saturation_color":0,"rgb_shift":0.5}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4,"brightness":0.5,"brightness_flickering":0.07,"contrast":0.85,"fontIndex":7,"font_color":"#ffffff","frames_index":1,"glowing_line_strength":0.13,"horizontal_sincronization":0,"jitter":0.08,"motion_blur":0.3,"noise_strength":0.03,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":1,"saturation_color":0,"rgb_shift":0.5,"fontWidth":1.0}' builtin: true } ListElement{ text: "IBM 3278" - obj_string: '{"ambient_light":0.1,"background_color":"#000000","bloom_strength":0.15,"brightness":0.5,"brightness_flickering":0,"contrast":0.95,"fontIndex":8,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0,"horizontal_sincronization":0,"jitter":0,"motion_blur":0.6,"noise_strength":0,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.1,"background_color":"#000000","bloom_strength":0.15,"brightness":0.5,"brightness_flickering":0,"contrast":0.95,"fontIndex":8,"font_color":"#0ccc68","frames_index":1,"glowing_line_strength":0,"horizontal_sincronization":0,"jitter":0,"motion_blur":0.6,"noise_strength":0,"rasterization":0,"screen_distortion":0.1,"windowOpacity":1,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } ListElement{ text: "Transparent Green" - obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681,"chroma_color":0,"saturation_color":0,"rgb_shift":0}' + obj_string: '{"ambient_light":0.2,"background_color":"#000000","bloom_strength":0.4549689440993788,"brightness":0.5,"brightness_flickering":0.20341614906832298,"contrast":0.85,"fontIndex":0,"font_color":"#0ccc68","frames_index":0,"glowing_line_strength":0.15993788819875776,"horizontal_sincronization":0.05045871559633028,"jitter":0.20341614906832298,"motion_blur":0.24999999999999997,"noise_strength":0.20031055900621117,"rasterization":0,"screen_distortion":0.05045871559633028,"windowOpacity":0.5956221198156681,"chroma_color":0,"saturation_color":0,"rgb_shift":0,"fontWidth":1.0}' builtin: true } } -- 2.47.2 From 1dd633be0bf3c66cfd4960eac557cb54a67f9f5f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 29 Sep 2014 02:00:54 +0200 Subject: [PATCH 093/477] Reorganize settings window. --- app/qml/SettingsGeneralTab.qml | 46 +++-------------- app/qml/SettingsPerformanceTab.qml | 82 ++++++++++++++++++++++++++++++ app/qml/SettingsTerminalTab.qml | 14 ----- app/qml/SettingsWindow.qml | 12 ++++- app/qml/resources.qrc | 1 + 5 files changed, 101 insertions(+), 54 deletions(-) create mode 100644 app/qml/SettingsPerformanceTab.qml diff --git a/app/qml/SettingsGeneralTab.qml b/app/qml/SettingsGeneralTab.qml index c4ea35a..8c6cb47 100644 --- a/app/qml/SettingsGeneralTab.qml +++ b/app/qml/SettingsGeneralTab.qml @@ -92,49 +92,17 @@ Tab{ } } GroupBox{ - title: qsTr("Performace") + title: qsTr("Frame") Layout.fillWidth: true - Layout.columnSpan: 2 - anchors.left: parent.left - anchors.right: parent.right - GridLayout{ + RowLayout{ anchors.fill: parent - rows: 3 - columns: 3 - CheckBox{ - Layout.columnSpan: 3 - checked: !shadersettings._frameReflections - text: qsTr("Disable reflections") - onCheckedChanged: shadersettings._frameReflections = !checked - enabled: shadersettings.reflectionsAllowed - } - CheckBox{ - property int fps: checked ? slider.value : 0 - onFpsChanged: shadersettings.fps = fps - checked: shadersettings.fps !== 0 - text: qsTr("Limit FPS") - } - Slider{ - id: slider + ComboBox{ + id: framescombobox Layout.fillWidth: true - stepSize: 1 - maximumValue: 60 - minimumValue: 1 - enabled: shadersettings.fps !== 0 - value: shadersettings.fps !== 0 ? shadersettings.fps : 60 + model: shadersettings.frames_list + currentIndex: shadersettings.frames_index + onCurrentIndexChanged: shadersettings.frames_index = currentIndex } - Text{text: slider.value} - Text{text: qsTr("Texture quality")} - Slider{ - Layout.fillWidth: true - id: txtslider - onValueChanged: shadersettings.window_scaling = value; - value: shadersettings.window_scaling - tickmarksEnabled: true - stepSize: 0.25 - Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 - } - Text{text: Math.round(txtslider.value * 100) + "%"} } } } diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml new file mode 100644 index 0000000..66c555e --- /dev/null +++ b/app/qml/SettingsPerformanceTab.qml @@ -0,0 +1,82 @@ +/******************************************************************************* +* Copyright (c) 2013 "Filippo Scognamiglio" +* https://github.com/Swordfish90/cool-retro-term +* +* This file is part of cool-retro-term. +* +* cool-retro-term is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*******************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 + +Tab{ + ColumnLayout{ + anchors.fill: parent + GroupBox{ + title: qsTr("General") + Layout.fillWidth: true + Layout.columnSpan: 2 + anchors.left: parent.left + anchors.right: parent.right + GridLayout{ + anchors.fill: parent + rows: 2 + columns: 3 + CheckBox{ + property int fps: checked ? slider.value : 0 + onFpsChanged: shadersettings.fps = fps + checked: shadersettings.fps !== 0 + text: qsTr("Limit FPS") + } + Slider{ + id: slider + Layout.fillWidth: true + stepSize: 1 + maximumValue: 60 + minimumValue: 1 + enabled: shadersettings.fps !== 0 + value: shadersettings.fps !== 0 ? shadersettings.fps : 60 + } + Text{text: slider.value} + Text{text: qsTr("Texture quality")} + Slider{ + Layout.fillWidth: true + id: txtslider + onValueChanged: shadersettings.window_scaling = value; + value: shadersettings.window_scaling + tickmarksEnabled: true + stepSize: 0.25 + Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 + } + Text{text: Math.round(txtslider.value * 100) + "%"} + } + } + GroupBox{ + title: qsTr("Frame") + Layout.fillWidth: true + Layout.columnSpan: 2 + anchors.left: parent.left + anchors.right: parent.right + CheckBox{ + Layout.columnSpan: 3 + checked: !shadersettings._frameReflections + text: qsTr("Disable reflections") + onCheckedChanged: shadersettings._frameReflections = !checked + enabled: shadersettings.reflectionsAllowed + } + } + } +} diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index 2b2dcc8..7cdc9d1 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -142,19 +142,5 @@ Tab{ } } } - GroupBox{ - title: qsTr("Frame") - Layout.fillWidth: true - RowLayout{ - anchors.fill: parent - ComboBox{ - id: framescombobox - Layout.fillWidth: true - model: shadersettings.frames_list - currentIndex: shadersettings.frames_index - onCurrentIndexChanged: shadersettings.frames_index = currentIndex - } - } - } } } diff --git a/app/qml/SettingsWindow.qml b/app/qml/SettingsWindow.qml index a121bcc..7726402 100644 --- a/app/qml/SettingsWindow.qml +++ b/app/qml/SettingsWindow.qml @@ -28,27 +28,37 @@ Window { id: settings_window title: qsTr("Settings") width: 640 - height: 480 + height: 440 property int tabmargins: 15 TabView{ + id: tabView anchors.fill: parent anchors.margins: 10 SettingsGeneralTab{ + id: generalTab title: qsTr("General") anchors.fill: parent anchors.margins: tabmargins } SettingsTerminalTab{ + id: terminalTab title: qsTr("Terminal") anchors.fill: parent anchors.margins: tabmargins } SettingsEffectsTab{ + id: effectsTab title: qsTr("Effects") anchors.fill: parent anchors.margins: tabmargins } + SettingsPerformanceTab{ + id: performanceTab + title: qsTr("Performance") + anchors.fill: parent + anchors.margins: tabmargins + } } } diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index a9df1ff..dfc44ca 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -64,5 +64,6 @@ fonts/1985-ibm-pc-vga/dos437.txt Storage.qml CRTMainMenuBar.qml + SettingsPerformanceTab.qml -- 2.47.2 From 2ff6c71c23de9e46ad3d86af17513ac701db023a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 29 Sep 2014 21:26:41 +0200 Subject: [PATCH 094/477] Adding adjustable scanline quality. Textures are now always smoothed. Terminal texture is now scaled (by integer factors) depending on the scaling level. --- app/qml/ApplicationSettings.qml | 8 +++++- app/qml/PreprocessedTerminal.qml | 18 +++++++++--- app/qml/SettingsPerformanceTab.qml | 45 ++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 037920d..6752953 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -85,6 +85,9 @@ Item{ property int rasterization: no_rasterization + property int scanline_quality: 3 + onScanline_qualityChanged: handleFontChanged(); + ListModel{ id: framelist ListElement{text: "No frame"; source: "./frames/NoFrame.qml"; reflections: false} @@ -170,7 +173,8 @@ Item{ fontScalingIndex: fontScalingIndex, fontIndexes: fontIndexes, frameReflections: _frameReflections, - showMenubar: showMenubar + showMenubar: showMenubar, + scanline_quality: scanline_quality } return JSON.stringify(settings); } @@ -240,6 +244,8 @@ Item{ _frameReflections = settings.frameReflections !== undefined ? settings.frameReflections : _frameReflections; showMenubar = settings.showMenubar !== undefined ? settings.showMenubar : showMenubar; + + scanline_quality = settings.scanline_quality !== undefined ? settings.scanline_quality : scanline_quality; } function loadProfileString(profileString){ diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 4fcc4b1..ae696c8 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -84,6 +84,8 @@ Item{ colorScheme: "cool-retro-term" + smooth: false + session: KSession { id: ksession kbScheme: "xterm" @@ -109,6 +111,12 @@ Item{ width = Qt.binding(function() {return Math.floor(fontWidth * terminalContainer.width / screenScaling);}); height = Qt.binding(function() {return Math.floor(terminalContainer.height / screenScaling);}); + var scaleTexture = Math.max(Math.round(screenScaling / shadersettings.scanline_quality), 1.0); + + kterminalSource.textureSize = Qt.binding(function () { + return Qt.size(kterminal.width * scaleTexture, kterminal.height * scaleTexture); + }); + setLineSpacing(lineSpacing); update(); restartBlurredSource(); @@ -176,7 +184,6 @@ Item{ id: kterminalSource sourceItem: kterminal hideSource: true - smooth: mScanlines == shadersettings.no_rasterization wrapMode: ShaderEffectSource.ClampToEdge live: false @@ -202,8 +209,6 @@ Item{ hideSource: true wrapMode: kterminalSource.wrapMode - smooth: mScanlines == shadersettings.no_rasterization - function restartBlurSource(){ livetimer.restart(); } @@ -230,12 +235,17 @@ Item{ livetimer.restart(); } } + Connections{ + target: shadersettings + onScanline_qualityChanged: restartBlurredSource(); + } } } Loader{ id: blurredTerminalLoader - anchors.fill: kterminal + width: kterminalSource.textureSize.width + height: kterminalSource.textureSize.height active: mBlur !== 0 sourceComponent: ShaderEffect { diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml index 66c555e..16ae7f1 100644 --- a/app/qml/SettingsPerformanceTab.qml +++ b/app/qml/SettingsPerformanceTab.qml @@ -28,7 +28,6 @@ Tab{ GroupBox{ title: qsTr("General") Layout.fillWidth: true - Layout.columnSpan: 2 anchors.left: parent.left anchors.right: parent.right GridLayout{ @@ -64,14 +63,54 @@ Tab{ Text{text: Math.round(txtslider.value * 100) + "%"} } } + GroupBox{ + title: qsTr("Rasterization") + Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right + GridLayout{ + id: scanlineQualityContainer + anchors.fill: parent + columns: 3 + property alias valsIndex: scanlineQualitySlider.value + property var vals: [4,3,2] + property var valsStrings: [ + qsTr("Low"), + qsTr("Medium"), + qsTr("High"), + qsTr("Very high") + ] + + onValsIndexChanged: shadersettings.scanline_quality = vals[valsIndex]; + + Text{text: qsTr("Scanline quality")} + Slider{ + id: scanlineQualitySlider + Layout.fillWidth: true + onValueChanged: parent.valsIndex = value; + stepSize: 1 + Component.onCompleted: { + minimumValue = 0; + maximumValue = 2; + value = parent.vals.indexOf(shadersettings.scanline_quality); + } + Connections{ + target: shadersettings + onScanline_qualityChanged: + scanlineQualityContainer.valsIndex = scanlineQualityContainer.vals.indexOf(shadersettings.scanline_quality); + } + } + Text{ + text: parent.valsStrings[parent.valsIndex]; + } + } + } GroupBox{ title: qsTr("Frame") Layout.fillWidth: true - Layout.columnSpan: 2 anchors.left: parent.left anchors.right: parent.right CheckBox{ - Layout.columnSpan: 3 checked: !shadersettings._frameReflections text: qsTr("Disable reflections") onCheckedChanged: shadersettings._frameReflections = !checked -- 2.47.2 From e815fe27873e820cad04fd7129580a09da2580c4 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Mon, 29 Sep 2014 22:38:33 +0200 Subject: [PATCH 095/477] Setting scaling stepSize to 0.05 instead of 0.1. Refactored scaling handling. --- app/qml/ApplicationSettings.qml | 27 +++++++++++++-------------- app/qml/SettingsTerminalTab.qml | 29 +++++++++++++---------------- app/qml/main.qml | 11 ++--------- 3 files changed, 28 insertions(+), 39 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 6752953..d907efd 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -119,30 +119,29 @@ Item{ onLoaded: handleFontChanged() } - signal fontScalingChanged - property var fontScalingList: [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5] - property int fontScalingIndex: 5 + property real fontScaling: 1.0 + onFontScalingChanged: handleFontChanged(); - property real fontWidth: 1.0 - onFontWidthChanged: handleFontChanged(); - - function setScalingIndex(newScaling){ - fontScalingIndex = newScaling; - fontScalingChanged(); + function incrementScaling(){ + fontScaling = Math.min(fontScaling + 0.05, 2.50); handleFontChanged(); } - function getScalingIndex(){ - return fontScalingIndex; + function decrementScaling(){ + fontScaling = Math.max(fontScaling - 0.05, 0.50); + handleFontChanged(); } + property real fontWidth: 1.0 + onFontWidthChanged: handleFontChanged(); + property var fontIndexes: [0,0,0] property var fontlist: fontManager.item.fontlist function handleFontChanged(){ if(!fontManager.item) return; fontManager.item.selectedFontIndex = fontIndexes[rasterization]; - fontManager.item.scaling = fontScalingList[fontScalingIndex]; + fontManager.item.scaling = fontScaling; var fontSource = fontManager.item.source; var pixelSize = fontManager.item.pixelSize; @@ -170,7 +169,7 @@ Item{ fps: fps, window_scaling: window_scaling, show_terminal_size: show_terminal_size, - fontScalingIndex: fontScalingIndex, + fontScaling: fontScaling, fontIndexes: fontIndexes, frameReflections: _frameReflections, showMenubar: showMenubar, @@ -239,7 +238,7 @@ Item{ window_scaling = settings.window_scaling !== undefined ? settings.window_scaling : window_scaling fontIndexes = settings.fontIndexes !== undefined ? settings.fontIndexes : fontIndexes - fontScalingIndex = settings.fontScalingIndex !== undefined ? settings.fontScalingIndex : fontScalingIndex + fontScaling = settings.fontScaling !== undefined ? settings.fontScaling : fontScaling _frameReflections = settings.frameReflections !== undefined ? settings.frameReflections : _frameReflections; diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index 7cdc9d1..02799dc 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -35,11 +35,8 @@ Tab{ model: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")] currentIndex: shadersettings.rasterization onCurrentIndexChanged: { - scalingChanger.enabled = false; shadersettings.rasterization = currentIndex fontChanger.updateIndex(); - scalingChanger.updateIndex(); - scalingChanger.enabled = true; } } } @@ -67,24 +64,24 @@ Tab{ RowLayout{ Layout.fillWidth: true Slider{ - id: scalingChanger Layout.fillWidth: true - minimumValue: 0 - maximumValue: shadersettings.fontScalingList.length - 1 - stepSize: 1 - tickmarksEnabled: true - value: updateIndex() - onValueChanged: { - if(!enabled) return; //Ugly and hacky solution. Look for a better solution. - shadersettings.setScalingIndex(value); + id: fontScalingChanger + onValueChanged: if(enabled) shadersettings.fontScaling = value + stepSize: 0.05 + enabled: false // Another trick to fix initial bad behavior. + Component.onCompleted: { + minimumValue = 0.5; + maximumValue = 2.5; + value = shadersettings.fontScaling; + enabled = true; } - function updateIndex(){ - value = shadersettings.getScalingIndex(); + Connections{ + target: shadersettings + onFontScalingChanged: fontScalingChanger.value = shadersettings.fontScaling; } - Component.onCompleted: shadersettings.fontScalingChanged.connect(updateIndex); } Text{ - text: shadersettings.fontScalingList[scalingChanger.value].toFixed(2) + text: Math.round(fontScalingChanger.value * 100) + "%" } } Text{ text: qsTr("Font Width") } diff --git a/app/qml/main.qml b/app/qml/main.qml index 96bf53e..8b0089b 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -85,20 +85,13 @@ ApplicationWindow{ id: zoomIn text: qsTr("Zoom In") shortcut: "Ctrl++" - onTriggered: { - var oldScaling = shadersettings.fontScalingIndex; - var maxScalingIndex = shadersettings.fontScalingList.length - 1; - shadersettings.setScalingIndex(Math.min(oldScaling + 1, maxScalingIndex)); - } + onTriggered: shadersettings.incrementScaling(); } Action{ id: zoomOut text: qsTr("Zoom Out") shortcut: "Ctrl+-" - onTriggered: { - var oldScaling = shadersettings.fontScalingIndex; - shadersettings.setScalingIndex(Math.max(oldScaling - 1, 0)); - } + onTriggered: shadersettings.decrementScaling(); } Action{ id: showAboutAction -- 2.47.2 From cc72a28ee34ca5fa384f6be0826d36ad89aa0d69 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 30 Sep 2014 00:10:14 +0200 Subject: [PATCH 096/477] Updating sources when font settings are changed. --- app/qml/PreprocessedTerminal.qml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index ae696c8..49f9b84 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -77,6 +77,23 @@ Item{ kterminal.copyClipboard(); } + //When settings are updated sources need to be redrawn. + Connections{ + target: shadersettings + onFontScalingChanged: terminalContainer.updateSources(); + onFontWidthChanged: terminalContainer.updateSources(); + } + Connections{ + target: terminalContainer + onWidthChanged: terminalContainer.updateSources(); + onHeightChanged: terminalContainer.updateSources(); + } + function updateSources() { + kterminal.update(); + kterminal.updateImage(); + } + + KTerminal { id: kterminal width: parent.width @@ -95,9 +112,6 @@ Item{ } } - onWidthChanged: update(); - onHeightChanged: update(); - FontLoader{ id: fontLoader } Text{id: fontMetrics; text: "B"; visible: false} -- 2.47.2 From ba77e218173cd691c3507403df838a583750783f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 30 Sep 2014 00:57:57 +0200 Subject: [PATCH 097/477] Bloom quality is now customizable in performance tab. --- app/qml/ApplicationSettings.qml | 6 +++- app/qml/PreprocessedTerminal.qml | 9 ++--- app/qml/SettingsPerformanceTab.qml | 55 +++++++++++++++++++++++++----- 3 files changed, 57 insertions(+), 13 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index d907efd..66327bf 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -69,6 +69,8 @@ Item{ property real motion_blur: 0.40 property real bloom_strength: 0.65 + property real bloom_quality: 1.0 + property real chroma_color: 0.0 property real saturation_color: 0.0 @@ -173,7 +175,8 @@ Item{ fontIndexes: fontIndexes, frameReflections: _frameReflections, showMenubar: showMenubar, - scanline_quality: scanline_quality + scanline_quality: scanline_quality, + bloom_quality: bloom_quality } return JSON.stringify(settings); } @@ -245,6 +248,7 @@ Item{ showMenubar = settings.showMenubar !== undefined ? settings.showMenubar : showMenubar; scanline_quality = settings.scanline_quality !== undefined ? settings.scanline_quality : scanline_quality; + bloom_quality = settings.bloom_quality !== undefined ? settings.bloom_quality : bloom_quality; } function loadProfileString(profileString){ diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 49f9b84..c8e9b29 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -303,14 +303,15 @@ Item{ // BLOOM //////////////////////////////////////////////////////////////// Loader{ + property real scaling: shadersettings.bloom_quality id: bloomEffectLoader active: mBloom != 0 - anchors.fill: parent + width: parent.width * scaling + height: parent.height * scaling sourceComponent: FastBlur{ - radius: 48 + radius: 48 * scaling source: kterminal transparentBorder: true - smooth: false } } Loader{ @@ -319,7 +320,7 @@ Item{ sourceComponent: ShaderEffectSource{ sourceItem: bloomEffectLoader.item hideSource: true - smooth: false + smooth: true } } diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml index 16ae7f1..a0963b8 100644 --- a/app/qml/SettingsPerformanceTab.qml +++ b/app/qml/SettingsPerformanceTab.qml @@ -50,7 +50,7 @@ Tab{ value: shadersettings.fps !== 0 ? shadersettings.fps : 60 } Text{text: slider.value} - Text{text: qsTr("Texture quality")} + Text{text: qsTr("Texture Quality")} Slider{ Layout.fillWidth: true id: txtslider @@ -77,13 +77,12 @@ Tab{ property var valsStrings: [ qsTr("Low"), qsTr("Medium"), - qsTr("High"), - qsTr("Very high") + qsTr("High") ] onValsIndexChanged: shadersettings.scanline_quality = vals[valsIndex]; - Text{text: qsTr("Scanline quality")} + Text{text: qsTr("Scanlines Quality")} Slider{ id: scanlineQualitySlider Layout.fillWidth: true @@ -105,16 +104,56 @@ Tab{ } } } + GroupBox{ + title: qsTr("Bloom") + Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right + GridLayout{ + id: bloomQualityContainer + anchors.fill: parent + columns: 3 + property alias valsIndex: bloomQualitySlider.value + property var vals: [0.25, 0.50, 1.00] + property var valsStrings: [ + qsTr("Low"), + qsTr("Medium"), + qsTr("High") + ] + + onValsIndexChanged: shadersettings.bloom_quality = vals[valsIndex]; + + Text{text: qsTr("Bloom Quality")} + Slider{ + id: bloomQualitySlider + Layout.fillWidth: true + onValueChanged: parent.valsIndex = value; + stepSize: 1 + Component.onCompleted: { + minimumValue = 0; + maximumValue = 2; + value = parent.vals.indexOf(shadersettings.bloom_quality); + } + Connections{ + target: shadersettings + onBloom_qualityChanged: + bloomQualityContainer.valsIndex = bloomQualityContainer.vals.indexOf(shadersettings.bloom_quality); + } + } + Text{ + text: parent.valsStrings[parent.valsIndex]; + } + } + } GroupBox{ title: qsTr("Frame") Layout.fillWidth: true anchors.left: parent.left anchors.right: parent.right CheckBox{ - checked: !shadersettings._frameReflections - text: qsTr("Disable reflections") - onCheckedChanged: shadersettings._frameReflections = !checked - enabled: shadersettings.reflectionsAllowed + checked: shadersettings._frameReflections + text: qsTr("Frame Reflections") + onCheckedChanged: shadersettings._frameReflections = checked } } } -- 2.47.2 From 466fea495d38a41092072ab35a93343052c01d95 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 30 Sep 2014 16:21:56 +0200 Subject: [PATCH 098/477] Setting asynchronous in loaders. --- app/qml/PreprocessedTerminal.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index c8e9b29..a009476 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -213,6 +213,7 @@ Item{ } Loader{ id: blurredSourceLoader + asynchronous: true active: mBlur !== 0 sourceComponent: ShaderEffectSource{ @@ -261,6 +262,7 @@ Item{ width: kterminalSource.textureSize.width height: kterminalSource.textureSize.height active: mBlur !== 0 + asynchronous: true sourceComponent: ShaderEffect { property variant txt_source: kterminalSource @@ -306,6 +308,7 @@ Item{ property real scaling: shadersettings.bloom_quality id: bloomEffectLoader active: mBloom != 0 + asynchronous: true width: parent.width * scaling height: parent.height * scaling sourceComponent: FastBlur{ @@ -317,6 +320,7 @@ Item{ Loader{ id: bloomSourceLoader active: mBloom != 0 + asynchronous: true sourceComponent: ShaderEffectSource{ sourceItem: bloomEffectLoader.item hideSource: true -- 2.47.2 From 5cfee38329d8459fb93e05321083a4a02b9d37d0 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 30 Sep 2014 16:33:22 +0200 Subject: [PATCH 099/477] Bloom effect is now updated manually as the others. --- app/qml/PreprocessedTerminal.qml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index a009476..0c0d033 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -322,9 +322,15 @@ Item{ active: mBloom != 0 asynchronous: true sourceComponent: ShaderEffectSource{ + id: _bloomEffectSource sourceItem: bloomEffectLoader.item hideSource: true + live: false smooth: true + Connections{ + target: kterminalSource + onSourceUpdate: _bloomEffectSource.scheduleUpdate(); + } } } -- 2.47.2 From dab4b13bfdb1d9da89f0bb44e7211129eca2e121 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 4 Oct 2014 00:43:15 +0200 Subject: [PATCH 100/477] Adding command line parameters to reset the default settings and to change the initial profile. --- app/main.cpp | 10 +++++++++- app/qml/ApplicationSettings.qml | 24 +++++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/main.cpp b/app/main.cpp index 259b64f..10c6b96 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -13,7 +13,15 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QQmlApplicationEngine engine; - // Managing some env variables + // Manage command line arguments from the cpp side + QStringList args = app.arguments(); + if (args.contains("-h") || args.contains("--help")) { + qDebug() << "Usage: " + args.at(0) + " [--default-settings] [-h|--help]"; + qDebug() << " --default-settings Run cool-old-term with the default settings"; + qDebug() << " -p|--profile Run cool-old-term with the given profile."; + qDebug() << " -h|--help Print this help."; + return 0; + } // Manage import paths QStringList importPathList = engine.importPathList(); diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 66327bf..e9fd1b8 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -379,9 +379,31 @@ Item{ } } + function getProfileIndexByName(name) { + for (var i = 0; i < profileslist.count; i++) { + if(profileslist.get(i).text === name) + return i; + } + return -1; + } + Component.onCompleted: { - loadSettings(); + // Manage the arguments from the QML side. + var args = Qt.application.arguments; + if (args.indexOf("--default-settings") === -1) { + loadSettings(); + } + loadCustomProfiles(); + + var profileArgPosition = args.indexOf("--profile"); + if (profileArgPosition !== -1) { + var profileIndex = getProfileIndexByName(args[profileArgPosition + 1]); + if (profileIndex !== -1) + loadProfile(profileIndex); + else + console.log("Warning: selected profile is not valid; ignoring it"); + } } Component.onDestruction: { storeSettings(); -- 2.47.2 From f15440c3c3c8ca865acf66202eaa29ca97a63920 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 4 Oct 2014 14:09:49 +0200 Subject: [PATCH 101/477] Provide a fallback if samplers in vertex shader are not supported. --- app/qml/ShaderTerminal.qml | 51 ++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index dc30bbd..b035ad4 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -56,6 +56,9 @@ ShaderEffect { property real time: timeManager.time property variant randomFunctionSource: randfuncsource + // If something goes wrong activate the fallback version of the shader. + property bool fallBack: false + blending: false //Smooth random texture used for flickering effect. @@ -84,7 +87,6 @@ ShaderEffect { vertexShader: " uniform highp mat4 qt_Matrix; uniform highp float time; - uniform sampler2D randomFunctionSource; uniform highp float disp_left; uniform highp float disp_right; @@ -96,10 +98,13 @@ ShaderEffect { varying highp vec2 qt_TexCoord0;" + - (brightness_flickering !== 0.0 ?" + (!fallBack ? " + uniform sampler2D randomFunctionSource;" : "") + + + (!fallBack && brightness_flickering !== 0.0 ?" varying lowp float brightness; uniform lowp float brightness_flickering;" : "") + - (horizontal_sincronization !== 0.0 ?" + (!fallBack && horizontal_sincronization !== 0.0 ?" varying lowp float horizontal_distortion; uniform lowp float horizontal_sincronization;" : "") + " @@ -107,11 +112,11 @@ ShaderEffect { qt_TexCoord0.x = (qt_MultiTexCoord0.x - disp_left) / (1.0 - disp_left - disp_right); qt_TexCoord0.y = (qt_MultiTexCoord0.y - disp_top) / (1.0 - disp_top - disp_bottom); vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" + - (brightness_flickering !== 0.0 ? " + (!fallBack && brightness_flickering !== 0.0 ? " brightness = 1.0 + (texture2D(randomFunctionSource, coords).g - 0.5) * brightness_flickering;" : "") + - (horizontal_sincronization !== 0.0 ? " + (!fallBack && horizontal_sincronization !== 0.0 ? " float randval = 1.5 * texture2D(randomFunctionSource,(vec2(1.0) -coords) * 0.5).g; float negsinc = 1.0 - 0.6 * horizontal_sincronization;" + " horizontal_distortion = step(negsinc, randval) * (randval - negsinc) * 0.3*horizontal_sincronization;" @@ -148,9 +153,16 @@ ShaderEffect { uniform lowp float jitter;" : "") + (rgb_shift !== 0 ? " uniform lowp float rgb_shift;" : "") + - (brightness_flickering !== 0 ? " + + (fallBack && (brightness_flickering || horizontal_sincronization) ? " + uniform lowp sampler2D randomFunctionSource;" : "") + + (fallBack && horizontal_sincronization !== 0 ? " + uniform lowp float horizontal_sincronization;" : "") + + (fallBack && brightness_flickering !== 0.0 ?" + uniform lowp float brightness_flickering;" : "") + + (!fallBack && brightness_flickering !== 0 ? " varying lowp float brightness;" : "") + - (horizontal_sincronization !== 0 ? " + (!fallBack && horizontal_sincronization !== 0 ? " varying lowp float horizontal_distortion;" : "") + (glowing_line_strength !== 0 ? " @@ -166,6 +178,20 @@ ShaderEffect { "vec2 cc = vec2(0.5) - qt_TexCoord0;" + "float distance = length(cc);" + + //FallBack if there are problem + (fallBack && (brightness_flickering || horizontal_sincronization) ? " + vec2 randCoords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" : "") + + + (fallBack && brightness_flickering !== 0.0 ? " + float brightness = 1.0 + (texture2D(randomFunctionSource, randCoords).g - 0.5) * brightness_flickering;" + : "") + + + (fallBack && horizontal_sincronization !== 0.0 ? " + float randval = 1.5 * texture2D(randomFunctionSource,(vec2(1.0) - randCoords) * 0.5).g; + float negsinc = 1.0 - 0.6 * horizontal_sincronization;" + " + float horizontal_distortion = step(negsinc, randval) * (randval - negsinc) * 0.3*horizontal_sincronization;" + : "") + + (noise_strength ? " float noise = noise_strength;" : "") + @@ -238,5 +264,14 @@ ShaderEffect { "gl_FragColor = vec4(finalColor * screen_brightness, qt_Opacity);" + "}" - onStatusChanged: if (log) console.log(log) //Print warning messages + onStatusChanged: { + // Print warning messages + if (log) + console.log(log); + + // Activate fallback mode + if (status == ShaderEffect.Error) { + fallBack = true; + } + } } -- 2.47.2 From 15a951288d9d65f9b2c78b7e3516a8abb751cab8 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 4 Oct 2014 15:01:50 +0200 Subject: [PATCH 102/477] Imported initial directory implementation from terminal-app. --- app/qml/PreprocessedTerminal.qml | 1 + konsole-qml-plugin/src/Session.cpp | 10 +++++++--- konsole-qml-plugin/src/ksession.cpp | 22 +++++++--------------- konsole-qml-plugin/src/ksession.h | 12 +++++++----- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 0c0d033..6ca87ad 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -137,6 +137,7 @@ Item{ } Component.onCompleted: { shadersettings.terminalFontChanged.connect(handleFontChange); + ksession.startShellProgram(); forceActiveFocus(); } } diff --git a/konsole-qml-plugin/src/Session.cpp b/konsole-qml-plugin/src/Session.cpp index 5eee57f..a3aeb68 100644 --- a/konsole-qml-plugin/src/Session.cpp +++ b/konsole-qml-plugin/src/Session.cpp @@ -31,8 +31,7 @@ #include // Qt -#include -#include +#include #include #include @@ -143,7 +142,12 @@ WId Session::windowId() const // window = window->parentWidget(); // } - return QGuiApplication::focusWindow()->winId(); + //return QGuiApplication::focusWindow()->winId(); + + //There is an issue here! Probably this always returns zero. + //but I try to preseve the behavior there was before. + QQuickWindow * window = _views.first()->window(); + return (window ? window->winId() : 0); } } diff --git a/konsole-qml-plugin/src/ksession.cpp b/konsole-qml-plugin/src/ksession.cpp index a12e838..a1ced10 100644 --- a/konsole-qml-plugin/src/ksession.cpp +++ b/konsole-qml-plugin/src/ksession.cpp @@ -35,8 +35,6 @@ KSession::KSession(QObject *parent) : QObject(parent), m_session(createSession("KSession")) { connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); - - m_session->run(); } KSession::~KSession() @@ -159,33 +157,27 @@ void KSession::setEnvironment(const QStringList &environment) void KSession::setShellProgram(const QString &progname) { - if (!m_session) - return; - m_session->setProgram(progname); } -void KSession::setWorkingDirectory(const QString &dir) +void KSession::setInitialWorkingDirectory(const QString &dir) { - if (!m_session) - return; - + _initialWorkingDirectory = dir; m_session->setInitialWorkingDirectory(dir); } +QString KSession::getInitialWorkingDirectory() +{ + return _initialWorkingDirectory; +} + void KSession::setArgs(QStringList &args) { - if (!m_session) - return; - m_session->setArguments(args); } void KSession::setTextCodec(QTextCodec *codec) { - if (!m_session) - return; - m_session->setCodec(codec); } diff --git a/konsole-qml-plugin/src/ksession.h b/konsole-qml-plugin/src/ksession.h index eb18339..c935b4d 100644 --- a/konsole-qml-plugin/src/ksession.h +++ b/konsole-qml-plugin/src/ksession.h @@ -34,6 +34,7 @@ class KSession : public QObject { Q_OBJECT Q_PROPERTY(QString kbScheme READ getKeyBindings WRITE setKeyBindings NOTIFY changedKeyBindings) + Q_PROPERTY(QString initialWorkingDirectory READ getInitialWorkingDirectory WRITE setInitialWorkingDirectory) public: KSession(QObject *parent = 0); @@ -43,9 +44,6 @@ public: //bool setup(); void addView(KTerminalDisplay *displa); - //start shell program if it was not started in constructor - void startShellProgram(); - int getRandomSeed(); QString getKeyBindings(); @@ -57,8 +55,9 @@ public: // Shell program, default is /bin/bash void setShellProgram(const QString & progname); - //working directory - void setWorkingDirectory(const QString & dir); + //Initial working directory + void setInitialWorkingDirectory(const QString & dir); + QString getInitialWorkingDirectory(); // Shell program args, default is none void setArgs(QStringList & args); @@ -106,6 +105,8 @@ public slots: void setKeyBindings(const QString & kb); void setTitle(QString name); + void startShellProgram(); + int getShellPID(); void changeDir(const QString & dir); @@ -125,6 +126,7 @@ private slots: private: //Konsole::KTerminalDisplay *m_terminalDisplay; + QString _initialWorkingDirectory; Session *m_session; }; -- 2.47.2 From a9ed10573bd3cc6189691e15fc355bc5d07db10a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 4 Oct 2014 15:26:09 +0200 Subject: [PATCH 103/477] Plugin: export shell program to QML. --- konsole-qml-plugin/src/ksession.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/konsole-qml-plugin/src/ksession.h b/konsole-qml-plugin/src/ksession.h index c935b4d..dbb912e 100644 --- a/konsole-qml-plugin/src/ksession.h +++ b/konsole-qml-plugin/src/ksession.h @@ -52,9 +52,6 @@ public: //environment void setEnvironment(const QStringList & environment); - // Shell program, default is /bin/bash - void setShellProgram(const QString & progname); - //Initial working directory void setInitialWorkingDirectory(const QString & dir); QString getInitialWorkingDirectory(); @@ -107,6 +104,9 @@ public slots: void startShellProgram(); + // Shell program, default is /bin/bash + void setShellProgram(const QString & progname); + int getShellPID(); void changeDir(const QString & dir); -- 2.47.2 From 614793ecd062199e0b1fc4efaa733aa3bf845b67 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 4 Oct 2014 16:21:17 +0200 Subject: [PATCH 104/477] Added --workdir and --program flags. --- app/main.cpp | 16 ++++++++++++++-- app/qml/PreprocessedTerminal.qml | 7 +++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/main.cpp b/app/main.cpp index 10c6b96..0cb4bb6 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -1,12 +1,20 @@ #include #include +#include +#include + #include #include #include +QString getNamedArgument(QStringList args, QString name) { + int index = args.indexOf(name); + return (index != -1) ? args[index + 1] : QString(""); +} + int main(int argc, char *argv[]) { setenv("QT_QPA_PLATFORMTHEME", "", 1); @@ -16,13 +24,18 @@ int main(int argc, char *argv[]) // Manage command line arguments from the cpp side QStringList args = app.arguments(); if (args.contains("-h") || args.contains("--help")) { - qDebug() << "Usage: " + args.at(0) + " [--default-settings] [-h|--help]"; + qDebug() << "Usage: " + args.at(0) + " [--default-settings] [--workdir ] [--program ] [-h|--help]"; qDebug() << " --default-settings Run cool-old-term with the default settings"; + qDebug() << " --workdir Change working directory to 'dir'"; + qDebug() << " --program Run the 'prog' in the new terminal."; qDebug() << " -p|--profile Run cool-old-term with the given profile."; qDebug() << " -h|--help Print this help."; return 0; } + engine.rootContext()->setContextProperty("workdir", getNamedArgument(args, "--workdir")); + engine.rootContext()->setContextProperty("shellProgram", getNamedArgument(args, "--program")); + // Manage import paths QStringList importPathList = engine.importPathList(); importPathList.prepend(QCoreApplication::applicationDirPath() + "/imports/"); @@ -32,4 +45,3 @@ int main(int argc, char *argv[]) return app.exec(); } - diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 6ca87ad..97318c5 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -137,6 +137,13 @@ Item{ } Component.onCompleted: { shadersettings.terminalFontChanged.connect(handleFontChange); + + // Retrieve the variable set in main.cpp if arguments are passed. + if (shellProgram) + ksession.setShellProgram(shellProgram); + if (workdir) + ksession.initialWorkingDirectory = workdir; + ksession.startShellProgram(); forceActiveFocus(); } -- 2.47.2 From 10cc27e7cf0291502f176ddf4dc83b702d327f9c Mon Sep 17 00:00:00 2001 From: Michael Shigorin Date: Mon, 6 Oct 2014 13:44:33 +0400 Subject: [PATCH 105/477] drop dummy banana method see also https://github.com/Swordfish90/cool-retro-term/issues/143 --- konsole-qml-plugin/src/TerminalDisplay.h | 2 -- konsole-qml-plugin/src/plugins.qmltypes | 7 ------- 2 files changed, 9 deletions(-) diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index 2084b41..05a17e7 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -407,8 +407,6 @@ public slots: ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// - void banana(int x, int y, int z, int w); - void setSession(KSession * session); KSession * getSession() const { return m_session; } diff --git a/konsole-qml-plugin/src/plugins.qmltypes b/konsole-qml-plugin/src/plugins.qmltypes index 45aa3ab..4a153ae 100644 --- a/konsole-qml-plugin/src/plugins.qmltypes +++ b/konsole-qml-plugin/src/plugins.qmltypes @@ -178,13 +178,6 @@ Module { Parameter { name: "color"; type: "QColor" } } Method { name: "selectionChanged" } - Method { - name: "banana" - Parameter { name: "x"; type: "int" } - Parameter { name: "y"; type: "int" } - Parameter { name: "z"; type: "int" } - Parameter { name: "w"; type: "int" } - } Method { name: "setSession" Parameter { name: "session"; type: "KSession"; isPointer: true } -- 2.47.2 From 9bd0ca74b683a6c743e4d2ca95842c66df15856c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Tue, 7 Oct 2014 21:50:02 +0200 Subject: [PATCH 106/477] Removed useless flag in main.qml. --- app/qml/main.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/qml/main.qml b/app/qml/main.qml index 8b0089b..56647c1 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -39,7 +39,6 @@ ApplicationWindow{ //Workaround: if menubar is assigned ugly margins are visible. menuBar: shadersettings.showMenubar ? defaultMenuBar : null - flags: Qt.WA_TranslucentBackground color: "#00000000" title: qsTr("cool-retro-term") -- 2.47.2 From a78231eac58f6f76e22e431250b3fc7d5390ac55 Mon Sep 17 00:00:00 2001 From: Anton Simakov Date: Thu, 9 Oct 2014 21:27:26 +0400 Subject: [PATCH 107/477] Build for mac os without significant changes of master's code (insead of osx branch). A bit later I can provide signed binary build for osx. --- .gitignore | 5 +++++ konsole-qml-plugin/konsole-qml-plugin.pro | 5 ++++- konsole-qml-plugin/src/kpty.cpp | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index db0327d..ba2c815 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,8 @@ Makefile* # Excludes compiled files imports cool-retro-term + +# Mac OSX + +.DS_Store +*.app diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro index 55e6fab..3fd6eeb 100644 --- a/konsole-qml-plugin/konsole-qml-plugin.pro +++ b/konsole-qml-plugin/konsole-qml-plugin.pro @@ -6,7 +6,10 @@ TEMPLATE = lib CONFIG += qt plugin hide_symbols QT += qml quick widgets -DEFINES += HAVE_POSIX_OPENPT HAVE_SYS_TIME_H HAVE_UPDWTMPX +DEFINES += HAVE_POSIX_OPENPT HAVE_SYS_TIME_H + +!macx:DEFINES += HAVE_UPDWTMPX +macx:DEFINES += HAVE_UTMPX HAVE_UT_USER #MANUALY DEFINED PLATFORM DEFINES += Q_WS_UBUNTU diff --git a/konsole-qml-plugin/src/kpty.cpp b/konsole-qml-plugin/src/kpty.cpp index 5ea5200..d383172 100644 --- a/konsole-qml-plugin/src/kpty.cpp +++ b/konsole-qml-plugin/src/kpty.cpp @@ -506,7 +506,11 @@ void KPty::login(const char * user, const char * remotehost) // note: strncpy without terminators _is_ correct here. man 4 utmp if (user) { +# ifdef HAVE_UT_USER + strncpy(l_struct.ut_user, user, sizeof(l_struct.ut_user)); +#elif strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name)); +#endif } if (remotehost) { @@ -617,7 +621,13 @@ void KPty::logout() setutent(); if ((ut = getutline(&l_struct))) { # endif + +# ifdef HAVE_UT_USER + memset(ut->ut_user, 0, sizeof(*ut->ut_user)); +#elif memset(ut->ut_name, 0, sizeof(*ut->ut_name)); +#endif + memset(ut->ut_host, 0, sizeof(*ut->ut_host)); # ifdef HAVE_STRUCT_UTMP_UT_SYSLEN ut->ut_syslen = 0; -- 2.47.2 From 0e765e427b1edf1b78a807ee99c64db01250fcf0 Mon Sep 17 00:00:00 2001 From: Michael Underwood Date: Thu, 9 Oct 2014 16:05:34 -0600 Subject: [PATCH 108/477] Patch incorrect #elif directives to #else directives --- konsole-qml-plugin/src/kpty.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/konsole-qml-plugin/src/kpty.cpp b/konsole-qml-plugin/src/kpty.cpp index d383172..c002c14 100644 --- a/konsole-qml-plugin/src/kpty.cpp +++ b/konsole-qml-plugin/src/kpty.cpp @@ -508,7 +508,7 @@ void KPty::login(const char * user, const char * remotehost) if (user) { # ifdef HAVE_UT_USER strncpy(l_struct.ut_user, user, sizeof(l_struct.ut_user)); -#elif +#else strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name)); #endif } @@ -624,7 +624,7 @@ void KPty::logout() # ifdef HAVE_UT_USER memset(ut->ut_user, 0, sizeof(*ut->ut_user)); -#elif +#else memset(ut->ut_name, 0, sizeof(*ut->ut_name)); #endif -- 2.47.2 From 29ec02b65ec6eb67b74b39d52b3f3ccc10c32acd Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 10 Oct 2014 00:40:31 +0200 Subject: [PATCH 109/477] Add --fullscreen command line parameter. Fix some mistakes in --help. --- app/main.cpp | 7 ++++--- app/qml/ApplicationSettings.qml | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/main.cpp b/app/main.cpp index 0cb4bb6..445989b 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -24,11 +24,12 @@ int main(int argc, char *argv[]) // Manage command line arguments from the cpp side QStringList args = app.arguments(); if (args.contains("-h") || args.contains("--help")) { - qDebug() << "Usage: " + args.at(0) + " [--default-settings] [--workdir ] [--program ] [-h|--help]"; - qDebug() << " --default-settings Run cool-old-term with the default settings"; + qDebug() << "Usage: " + args.at(0) + " [--default-settings] [--workdir ] [--program ] [-p|--profile ] [--fullscreen] [-h|--help]"; + qDebug() << " --default-settings Run cool-retro-term with the default settings"; qDebug() << " --workdir Change working directory to 'dir'"; qDebug() << " --program Run the 'prog' in the new terminal."; - qDebug() << " -p|--profile Run cool-old-term with the given profile."; + qDebug() << " --fullscreen Run cool-retro-term in fullscreen."; + qDebug() << " -p|--profile Run cool-retro-term with the given profile."; qDebug() << " -h|--help Print this help."; return 0; } diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index e9fd1b8..9ab6aae 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -404,6 +404,11 @@ Item{ else console.log("Warning: selected profile is not valid; ignoring it"); } + + if (args.indexOf("--fullscreen") !== -1) { + fullscreen = true; + showMenubar = false; + } } Component.onDestruction: { storeSettings(); -- 2.47.2 From c57ef45ce68b64fb10c61d7b2de01a01038d5c9f Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 10 Oct 2014 14:39:42 +0200 Subject: [PATCH 110/477] Add QML import directory for buldle. --- app/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/main.cpp b/app/main.cpp index 445989b..ff93931 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -37,9 +37,10 @@ int main(int argc, char *argv[]) engine.rootContext()->setContextProperty("workdir", getNamedArgument(args, "--workdir")); engine.rootContext()->setContextProperty("shellProgram", getNamedArgument(args, "--program")); - // Manage import paths + // Manage import paths for Linux and OSX. QStringList importPathList = engine.importPathList(); importPathList.prepend(QCoreApplication::applicationDirPath() + "/imports/"); + importPathList.prepend(QCoreApplication::applicationDirPath() + "/../PlugIns"); engine.setImportPathList(importPathList); engine.load(QUrl("qrc:/main.qml")); -- 2.47.2 From 093cead31288895e4062b1a26fd82704f59389e6 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 10 Oct 2014 15:12:28 +0200 Subject: [PATCH 111/477] Fixed a couple of UI issues under osx. --- app/qml/CRTMainMenuBar.qml | 8 ++++---- app/qml/PreprocessedTerminal.qml | 6 +++--- app/qml/SettingsPerformanceTab.qml | 1 - app/qml/main.qml | 6 +++++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/qml/CRTMainMenuBar.qml b/app/qml/CRTMainMenuBar.qml index 3fd4dec..7bbe6bd 100644 --- a/app/qml/CRTMainMenuBar.qml +++ b/app/qml/CRTMainMenuBar.qml @@ -14,15 +14,15 @@ MenuBar { visible: defaultMenuBar.visible MenuItem {action: copyAction} MenuItem {action: pasteAction} - MenuSeparator{} + MenuSeparator{visible: Qt.platform.os !== "osx"} MenuItem {action: showsettingsAction} } Menu{ title: qsTr("View") visible: defaultMenuBar.visible - MenuItem {action: fullscreenAction} - MenuItem {action: showMenubarAction} - MenuSeparator{} + MenuItem {action: fullscreenAction; visible: fullscreenAction.enabled} + MenuItem {action: showMenubarAction; visible: showMenubarAction.enabled} + MenuSeparator{visible: showMenubarAction.enabled} MenuItem {action: zoomIn} MenuItem {action: zoomOut} } diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 97318c5..21d4c31 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -152,9 +152,9 @@ Item{ id: contextmenu MenuItem{action: copyAction} MenuItem{action: pasteAction} - MenuSeparator{} - MenuItem{action: fullscreenAction} - MenuItem{action: showMenubarAction} + MenuSeparator{visible: Qt.platform.os !== "osx"} + MenuItem{action: fullscreenAction; visible: Qt.platform.os !== "osx"} + MenuItem{action: showMenubarAction; visible: Qt.platform.os !== "osx"} MenuSeparator{visible: !shadersettings.showMenubar} CRTMainMenuBar{visible: !shadersettings.showMenubar} } diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml index a0963b8..8286e5d 100644 --- a/app/qml/SettingsPerformanceTab.qml +++ b/app/qml/SettingsPerformanceTab.qml @@ -56,7 +56,6 @@ Tab{ id: txtslider onValueChanged: shadersettings.window_scaling = value; value: shadersettings.window_scaling - tickmarksEnabled: true stepSize: 0.25 Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 } diff --git a/app/qml/main.qml b/app/qml/main.qml index 56647c1..c062d68 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -37,7 +37,9 @@ ApplicationWindow{ onFullscreenChanged: visibility = (fullscreen ? Window.FullScreen : Window.Windowed) //Workaround: if menubar is assigned ugly margins are visible. - menuBar: shadersettings.showMenubar ? defaultMenuBar : null + menuBar: Qt.platform.os === "osx" + ? defaultMenuBar + : shadersettings.showMenubar ? defaultMenuBar : null color: "#00000000" title: qsTr("cool-retro-term") @@ -45,6 +47,7 @@ ApplicationWindow{ Action { id: showMenubarAction text: qsTr("Show Menubar") + enabled: Qt.platform.os !== "osx" checkable: true checked: shadersettings.showMenubar onTriggered: shadersettings.showMenubar = !shadersettings.showMenubar @@ -52,6 +55,7 @@ ApplicationWindow{ Action { id: fullscreenAction text: qsTr("Fullscreen") + enabled: Qt.platform.os !== "osx" shortcut: "Alt+F11" onTriggered: shadersettings.fullscreen = !shadersettings.fullscreen; checkable: true -- 2.47.2 From 539a5ed74fab7091a08967faaa709c160b5fd2ca Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 10 Oct 2014 15:43:38 +0200 Subject: [PATCH 112/477] Add missing arguments when -i and -l when starting under OSX. Thanks to sirgatez. --- konsole-qml-plugin/src/Session.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/konsole-qml-plugin/src/Session.cpp b/konsole-qml-plugin/src/Session.cpp index a3aeb68..146d4f7 100644 --- a/konsole-qml-plugin/src/Session.cpp +++ b/konsole-qml-plugin/src/Session.cpp @@ -307,6 +307,13 @@ void Session::run() QString argsTmp(_arguments.join(" ").trimmed()); QStringList arguments; arguments << exec; + +#ifdef Q_OS_OSX + // Fix osx initial behavior with -i (interactive) and -l (login). + arguments.append("-i"); + arguments.append("-l"); +#endif + if (argsTmp.length()) arguments << _arguments; -- 2.47.2 From 413a32f33fb695deba3de216066f86abbd1e3400 Mon Sep 17 00:00:00 2001 From: Jeka Der Date: Fri, 10 Oct 2014 21:38:01 +0200 Subject: [PATCH 113/477] debian packaging, initial commit --- packaging/debian/changelog | 5 +++++ packaging/debian/compat | 1 + packaging/debian/control | 15 +++++++++++++++ packaging/debian/rules | 4 ++++ packaging/debian/source/format | 1 + 5 files changed, 26 insertions(+) create mode 100644 packaging/debian/changelog create mode 100644 packaging/debian/compat create mode 100644 packaging/debian/control create mode 100755 packaging/debian/rules create mode 100644 packaging/debian/source/format diff --git a/packaging/debian/changelog b/packaging/debian/changelog new file mode 100644 index 0000000..890f094 --- /dev/null +++ b/packaging/debian/changelog @@ -0,0 +1,5 @@ +cool-retro-term (0.9-1) UNRELEASED; urgency=medium + + * Initial release. (Closes: #XXXXXX) + + -- Jeka Der Fri, 10 Oct 2014 19:58:29 +0200 diff --git a/packaging/debian/compat b/packaging/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/packaging/debian/compat @@ -0,0 +1 @@ +9 diff --git a/packaging/debian/control b/packaging/debian/control new file mode 100644 index 0000000..419a1a2 --- /dev/null +++ b/packaging/debian/control @@ -0,0 +1,15 @@ +Source: cool-retro-term +Maintainer: Jeka Der +Section: misc +Priority: optional +Standards-Version: 3.9.2 +Build-Depends: debhelper (>= 9),qmlscene, qt5-qmake, + qt5-default, qtdeclarative5-dev, qml-module-qtquick-controls, + qml-module-qtgraphicaleffects, qml-module-qtquick-dialogs, + qml-module-qtquick-localstorage, qml-module-qtquick-window2 + +Package: cool-retro-term +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: terminal emulator which mimics old screens + cool-retro-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. \ No newline at end of file diff --git a/packaging/debian/rules b/packaging/debian/rules new file mode 100755 index 0000000..4f2c774 --- /dev/null +++ b/packaging/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f +%: + dh $@ + diff --git a/packaging/debian/source/format b/packaging/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/packaging/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) -- 2.47.2 From 71020e40a57280956968f368297f3ea3fe6b8c0e Mon Sep 17 00:00:00 2001 From: darkpioneer Date: Fri, 10 Oct 2014 20:54:30 +0100 Subject: [PATCH 114/477] Update main.qml Added keyboard shortcut to show menu bar again --- app/qml/main.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/qml/main.qml b/app/qml/main.qml index c062d68..18180cf 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -48,6 +48,7 @@ ApplicationWindow{ id: showMenubarAction text: qsTr("Show Menubar") enabled: Qt.platform.os !== "osx" + shortcut: "Ctrl+Shift+M" checkable: true checked: shadersettings.showMenubar onTriggered: shadersettings.showMenubar = !shadersettings.showMenubar -- 2.47.2 From 8c08f638818a67530b996e65e9939c0c5f4fc3de Mon Sep 17 00:00:00 2001 From: Jeka Der Date: Fri, 10 Oct 2014 22:12:37 +0200 Subject: [PATCH 115/477] fixing lintian warnings --- packaging/debian/control | 10 ++++++---- packaging/debian/copyright | 13 +++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 packaging/debian/copyright diff --git a/packaging/debian/control b/packaging/debian/control index 419a1a2..0ed2d04 100644 --- a/packaging/debian/control +++ b/packaging/debian/control @@ -2,9 +2,9 @@ Source: cool-retro-term Maintainer: Jeka Der Section: misc Priority: optional -Standards-Version: 3.9.2 -Build-Depends: debhelper (>= 9),qmlscene, qt5-qmake, - qt5-default, qtdeclarative5-dev, qml-module-qtquick-controls, +Standards-Version: 3.9.6 +Build-Depends: debhelper (>= 9),qmlscene, + qt5-qmake, qtdeclarative5-dev, qml-module-qtquick-controls, qml-module-qtgraphicaleffects, qml-module-qtquick-dialogs, qml-module-qtquick-localstorage, qml-module-qtquick-window2 @@ -12,4 +12,6 @@ Package: cool-retro-term Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: terminal emulator which mimics old screens - cool-retro-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. \ No newline at end of file + cool-retro-term is a terminal emulator which mimics the look and feel + of the old cathode tube screens. It has been designed to be eye-candy, + customizable, and reasonably lightweight. diff --git a/packaging/debian/copyright b/packaging/debian/copyright new file mode 100644 index 0000000..9d1d34f --- /dev/null +++ b/packaging/debian/copyright @@ -0,0 +1,13 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cool-retro-term +Upstream-Contact: Filippo Scognamiglio +Source: https://github.com/Swordfish90/cool-retro-term + +Files: * +Copyright: 2014 Filippo Scognamiglio +License: GPL-3 + On Debian systems, the full text of the GNU General Public + License version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. + + -- 2.47.2 From 438c50d77570aad2aa5d5c08a72f1716d546a8b8 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 11 Oct 2014 01:24:20 +0200 Subject: [PATCH 116/477] Texture quality is actually working. (And also quite useful for high-dpi screens). --- app/qml/ApplicationSettings.qml | 2 +- app/qml/PreprocessedTerminal.qml | 8 +++-- app/qml/SettingsPerformanceTab.qml | 4 +-- app/qml/ShaderTerminal.qml | 8 ++--- app/qml/TerminalContainer.qml | 55 ++++++++++++++++++++++++++++++ app/qml/main.qml | 34 ++---------------- app/qml/resources.qrc | 1 + 7 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 app/qml/TerminalContainer.qml diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 9ab6aae..0555478 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -143,7 +143,7 @@ Item{ function handleFontChanged(){ if(!fontManager.item) return; fontManager.item.selectedFontIndex = fontIndexes[rasterization]; - fontManager.item.scaling = fontScaling; + fontManager.item.scaling = fontScaling * window_scaling; var fontSource = fontManager.item.source; var pixelSize = fontManager.item.pixelSize; diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 21d4c31..3627916 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -160,10 +160,12 @@ Item{ } MouseArea{ acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton - anchors.fill: parent + // This is incredibly ugly. All this file should be reorganized. + width: (parent.width + dleft + dright) / shadersettings.window_scaling - dleft -dright + height: (parent.height + dtop + dbottom) / shadersettings.window_scaling - dtop - dbottom onWheel:{ if(wheel.modifiers & Qt.ControlModifier){ - wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger(); + wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger(); } else { var coord = correctDistortion(wheel.x, wheel.y); var lines = wheel.angleDelta.y > 0 ? -1 : 1; @@ -313,7 +315,7 @@ Item{ // BLOOM //////////////////////////////////////////////////////////////// Loader{ - property real scaling: shadersettings.bloom_quality + property real scaling: shadersettings.bloom_quality * shadersettings.window_scaling id: bloomEffectLoader active: mBloom != 0 asynchronous: true diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml index 8286e5d..bad4731 100644 --- a/app/qml/SettingsPerformanceTab.qml +++ b/app/qml/SettingsPerformanceTab.qml @@ -56,8 +56,8 @@ Tab{ id: txtslider onValueChanged: shadersettings.window_scaling = value; value: shadersettings.window_scaling - stepSize: 0.25 - Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 + stepSize: 0.10 + Component.onCompleted: minimumValue = 0.3 //Without this value gets set to 0.5 } Text{text: Math.round(txtslider.value * 100) + "%"} } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index b035ad4..ebb7ae8 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -46,10 +46,10 @@ ShaderEffect { property bool frameReflections: shadersettings.frameReflections - property real disp_top: frame.item.displacementTop / height - property real disp_bottom: frame.item.displacementBottom / height - property real disp_left: frame.item.displacementLeft / width - property real disp_right: frame.item.displacementRight / width + property real disp_top: (frame.item.displacementTop * shadersettings.window_scaling) / height + property real disp_bottom: (frame.item.displacementBottom * shadersettings.window_scaling) / height + property real disp_left: (frame.item.displacementLeft * shadersettings.window_scaling) / width + property real disp_right: (frame.item.displacementRight * shadersettings.window_scaling) / width property real screen_brightness: shadersettings.brightness * 1.5 + 0.5 diff --git a/app/qml/TerminalContainer.qml b/app/qml/TerminalContainer.qml new file mode 100644 index 0000000..3a67ed0 --- /dev/null +++ b/app/qml/TerminalContainer.qml @@ -0,0 +1,55 @@ +import QtQuick 2.2 + +Item{ + Item{ + id: scalableContent + width: parent.width * shadersettings.window_scaling + height: parent.height * shadersettings.window_scaling + + Loader{ + id: frame + anchors.fill: parent + z: 2.1 + source: shadersettings.frame_source + } + PreprocessedTerminal{ + id: terminal + anchors.fill: parent + } + ShaderTerminal{ + id: shadercontainer + anchors.fill: parent + opacity: shadersettings.windowOpacity * 0.3 + 0.7 + z: 1.9 + } + } + + // This is used to render the texture to a lower resolution then scale it up. + Loader{ + id: scalableContentSource + active: shadersettings.window_scaling < 1 + sourceComponent: ShaderEffectSource{ + sourceItem: scalableContent + hideSource: true + smooth: true + } + } + Loader{ + active: shadersettings.window_scaling < 1 + anchors.fill: parent + sourceComponent: ShaderEffect{ + property var source: scalableContentSource.item + } + } + + // Terminal size overlay. Shown when terminal size changes. + Loader{ + id: sizeoverlayloader + z: 3 + anchors.centerIn: parent + active: shadersettings.show_terminal_size + sourceComponent: SizeOverlay{ + terminalSize: terminal.terminalSize + } + } +} diff --git a/app/qml/main.qml b/app/qml/main.qml index c062d68..639cdc7 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -113,29 +113,8 @@ ApplicationWindow{ id: timeManager enableTimer: terminalWindow.visible } - Item{ - id: maincontainer - anchors.centerIn: parent - width: parent.width * shadersettings.window_scaling - height: parent.height * shadersettings.window_scaling - scale: 1.0 / shadersettings.window_scaling - opacity: shadersettings.windowOpacity * 0.3 + 0.7 - - Loader{ - id: frame - anchors.fill: parent - z: 2.1 - source: shadersettings.frame_source - } - PreprocessedTerminal{ - id: terminal - anchors.fill: parent - } - ShaderTerminal{ - id: shadercontainer - anchors.fill: parent - z: 1.9 - } + TerminalContainer{ + anchors.fill: parent } SettingsWindow{ id: settingswindow @@ -145,14 +124,5 @@ ApplicationWindow{ id: aboutDialog visible: false } - Loader{ - id: sizeoverlayloader - z: 3 - anchors.centerIn: parent - active: shadersettings.show_terminal_size - sourceComponent: SizeOverlay{ - terminalSize: terminal.terminalSize - } - } Component.onCompleted: shadersettings.handleFontChanged(); } diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index dfc44ca..8cf78e2 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -65,5 +65,6 @@ Storage.qml CRTMainMenuBar.qml SettingsPerformanceTab.qml + TerminalContainer.qml -- 2.47.2 From 2dd4e0d841e3c65edeca705e747d8c8d517fbbc6 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 11 Oct 2014 13:20:23 +0200 Subject: [PATCH 117/477] Update README.md with OSX build instructions and donations link. --- README.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d08f7f1..b03083e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This terminal emulator requires Qt 5.2 or higher to run. ![Image]() ![Image]() -## Get cool-retro-term +##Get cool-retro-term You can either build cool-retro-term yourself (see below) or walk the easy way and install one of these packages: Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term). @@ -22,7 +22,7 @@ Arch users can install this [package](https://aur.archlinux.org/packages/cool-re yaourt -S aur/cool-retro-term-git -##Build instructions +##Build instructions (Linux) ##Dependencies Make sure to install these first. @@ -43,13 +43,13 @@ Make sure to install these first. **Fedora** This command should install the known fedora dependencies: -``` -sudo yum -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols -``` + + sudo yum -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols + or: -``` -sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols -``` + + sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols + --- **Arch Linux** @@ -75,6 +75,7 @@ Install dependencies: Install Qt directly from here http://qt-project.org/downloads . Once done export them in you path (replace "_/opt/Qt5.3.1/5.3/gcc_64/bin_" with your correct folder): export PATH=/opt/Qt5.3.1/5.3/gcc_64/bin/:$PATH +--- ###Compile Once you installed all dependencies (Qt is installed and in your path) you need to compile and run the application: @@ -92,3 +93,17 @@ qmake && make # Have fun! ./cool-retro-term ``` + +##Build instructions (OSX) + + brew install qt5 + git clone https://github.com/Swordfish90/cool-retro-term.git + export CPPFLAGS="-I/usr/local/opt/qt5/include" + export LDFLAGS="-L/usr/local/opt/qt5/lib" + export PATH=/usr/local/opt/qt5/bin:$PATH + cd cool-retro-term + qmake && make + open cool-retro-term.app + +##Donations +I made this project in my spare time because I love what I'm doing. If you are enjoying it and you want to buy me a beer click [here](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=flscogna%40gmail%2ecom&lc=IT&item_name=Filippo%20Scognamiglio¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) . -- 2.47.2 From 058bafe0338e6a5626e50323eec139358c32536d Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 11 Oct 2014 14:54:41 +0200 Subject: [PATCH 118/477] Finally added new shiny icon. --- app/app.pro | 2 ++ app/icons/crt.icns | Bin 0 -> 120474 bytes app/icons/crt128.png | Bin 0 -> 33217 bytes app/icons/crt256.png | Bin 0 -> 63001 bytes app/icons/crt32.png | Bin 0 -> 8565 bytes app/icons/crt64.png | Bin 0 -> 19229 bytes app/qml/AboutDialog.qml | 10 ++++++++-- app/qml/images/crt256.png | Bin 0 -> 63001 bytes app/qml/resources.qrc | 1 + 9 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 app/icons/crt.icns create mode 100644 app/icons/crt128.png create mode 100644 app/icons/crt256.png create mode 100644 app/icons/crt32.png create mode 100644 app/icons/crt64.png create mode 100644 app/qml/images/crt256.png diff --git a/app/app.pro b/app/app.pro index 3e47c73..d400020 100644 --- a/app/app.pro +++ b/app/app.pro @@ -4,6 +4,8 @@ TARGET = cool-retro-term DESTDIR = $$OUT_PWD/../ SOURCES = main.cpp +macx:ICON = icons/crt.icns + RESOURCES += qml/resources.qrc ######################################### diff --git a/app/icons/crt.icns b/app/icons/crt.icns new file mode 100644 index 0000000000000000000000000000000000000000..3af2b33655c7cb8b8089f952cd41ef3617bf9645 GIT binary patch literal 120474 zcmd?SXLwXswk=vpm2=KPDwRr7Nh*a>&RGbFAaXJ}nG7a_*RCoFi6A3_iEUCFng%0rjW&A%}b5_e6?Y2?0(3T z8@zMxn{<`WAXi#+W%qtImzI~77uxRL`T5?x`!`HEfgHT^Eb7cH;Hjmu~eBOV0@eZvOm*SLM{o)pld$KW^Xs`R+FjPUqJ@9`(QZ z-HmEjTI$U^H@r%bO(WMh^2|+K%vtWNcHWB}vsv%OJ~aBh|MA6lex*Y%)0j;bo894L zt_)|;>97}AEhdxK@7JhRN|jwJ*BDcCLq)~GoUE)8XI^$7E8uY^dze%1Fd0k+l~iLi zfBx-v;cu;fa~2l_vjZ9a)MSs_<#OXX^s42n{(df2(*KpSG?bg2>Gyk6yl%J0Z6A2q z`oX>apD=58KXYUU(o#Jhr_*LLTg(=dR;Q3@Ox7=={pK(2x!Hc7*We#J~-=wxD*&UEvq zpMSb{|K1PZno@lpCoXC<84R#wy+$pSsILtT3lvI~LM~TI)iS9}EEI_3 z3YCVoEpEhMFj`D_Djn|ApfMOVN@<)}q0t*5>{1KJY>2NwUYgkuz=Z2*!tHrux<#4@JuawF) z3e&MKa6e8Bm&AO02 z5BryEm5#Y{HJU|J);^@wKFZ3f9^UA-+N{y4&|mkpx2v3>x%Sx; zv@Yy#D|U#wfyVq(cL@y*be*7@jAELft`X2Sd0b(Hkno?#`?7F+Ov&q7jGS@ zwc{nDf$8F5(oCaQ!02U4b;r)#yYQ=TjK*#^o0w694{EgV@+uYo`snUG++OLP$r=oA zwVEuZutBENYcx_3ZmuP|o!cpicDU?TTw1RSYbIjDC>0WkRHCe7-qB!VD6yXu%8vCL);-E`Yep+g__$W9 zQAbqG_`Fz%X&bg|_1bmo*R39>H0bdP?IQ(USs_zMgi@KJZP=J`lc!9cGFpKf)6#YE zK(yhMaDwku$u+L

    SGO^g#Vfgo-ZzVUl}mmoeqUKmakB_s%iiHSmC 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