Simplified GUI Add-On Development for Third-Party Software Xiaojun Meng, Shengdong Zhao, Yongfeng Huang, Zhongyuan Zhang, James Eagan, Ramanathan Subramanian

Total Page:16

File Type:pdf, Size:1020Kb

Simplified GUI Add-On Development for Third-Party Software Xiaojun Meng, Shengdong Zhao, Yongfeng Huang, Zhongyuan Zhang, James Eagan, Ramanathan Subramanian WADE: Simplified GUI Add-on Development for Third-party Software Xiaojun Meng, Shengdong Zhao, Yongfeng Huang, Zhongyuan Zhang, James Eagan, Ramanathan Subramanian To cite this version: Xiaojun Meng, Shengdong Zhao, Yongfeng Huang, Zhongyuan Zhang, James Eagan, et al.. WADE: Simplified GUI Add-on Development for Third-party Software. CHI ’14: ACM SIGCHI Conference on Human Factors in Computing Systems, Apr 2014, Toronto, Canada. pp.10, 10.1145/2466110.2466192. hal-01115276 HAL Id: hal-01115276 https://hal-imt.archives-ouvertes.fr/hal-01115276 Submitted on 13 Sep 2019 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. WADE: Simplified GUI Add-on Development for Third-party Software Xiaojun Meng1, Shengdong Zhao1, Yongfeng Huang1, Zhongyuan Zhang1, James R. Eagan2, Ramanathan Subramanian3 1NUS-HCI Lab, National University of Singapore, 2Télécom ParisTech & CNRS LTCI UMR 5141, 3ADSC, University of Illinois at Urbana-Champaign 1{xiaojun,zhaosd}@comp.nus.edu.sg,[email protected],[email protected] [email protected],[email protected] Figure 1: WADE overview: 1) Kevin wants to make the following modifications to the original Paint.NET interface i) change menu labels from English to Chinese, ii) remove unused menus and icons, and iii) add a new “undo all” function. To this end, he 2) Installs WADE in Paint.NET, 3) Clones the Paint.NET GUI into the GUI builder of a WADE-supported IDE. Then, he (a) modifies the GUI using a WYSIWYG editor, and (b) writes code associated with the “undo all” widget via the event handler template. 4) All the above changes are compiled to an add-on that can be installed into Paint.NET for easy and convenient future use. ABSTRACT ACM Classification Keywords We present the WADE Integrated Development H.5.2. Information Interfaces and Presentation: User Environment (IDE), which simplifies the modification of Interfaces the interface and functionality of existing third-party General Terms software without access to source code. WADE clones the Human Factors Graphical User Interface (GUI) of a host program through dynamic-link library (DLL) injection in order to enable (1) INTRODUCTION WYSIWYG modification of the GUI and (2) the Software rarely fulfills the needs of all users all the time [7, modification of software functionality. We compare WADE 12]. Mindful of the need to make software adaptable to with an alternative state-of-the-art runtime toolkit individual needs, developers typically allow for software overloading approach in a user-study, finding that WADE customization by providing: significantly simplifies the task of GUI-based add-on • Capabilities for reconfiguring existing features and development. functions to suit personal taste (e.g., via preferences Author Keywords panes or dot files), or WADE; GUI; Add-on Integration; WYSIWYG; IDE • Software architecture for incorporating add-ons (e.g., using plugins, scripts and/or extensions) to enhance/modify the behavior of the original application. While these approaches can provide users with a great deal of control, every approach necessitates additional effort CHI 2014, April 26–May 1, 2014, Toronto, ON, Canada. from the software developers to explicitly provide Copyright © 2014 ACM. This is the author's version of the work. It is customization support at the software development stage. posted here for your personal use. Not for redistribution. The definitive Version of Record was published in Proceedings of the ACM For example, plugins, scripting interfaces and extensions SIGCHI Conference on Human Factors in Computing Systems. require the developer to provide and maintain an external http://dx.doi.org/10.1145/2556288.2557349 API to their software, which may potentially require maintaining an additional and separate interface to internal associate event handlers to existing widgets, so that functionality. enhancing/modifying software behavior becomes simpler. Owing to the above issues, many software developers do Figure 1 shows an example add-on development scenario not provide support for add-ons. Even when they do, such using WADE. Currently, WADE supports add-on support is often limited [1]. To address this limitation, development using both the open source SharpDevelop 4.2 much research has focused on approaches that enable third- and the Microsoft Visual Studio 2012 Ultimate IDEs for party developers to modify the interface or behavior of Windows Form applications on the Windows XP and existing applications without access to source code or to an Windows 7 platforms. external API. These approaches typically work by either: 1) We conducted an experiment to compare WADE with a operating on the surface-level of the interface, intercepting Scotty-like toolkit-based deep approach for modifying third input events and output pixels before they are delivered to party applications. Our results show that users subjectively the application (e.g., Prefab [2, 3], Façade [14]), or 2) found WADE much easier to use, and were objectively able integrating with the toolkit to gain access to the internal to develop GUI-based modifications 2.4 times faster than program structures (e.g., Scotty [4], SubArctic [5]). For the alternative approach on average. To summarize, the convenience, we call the former as surface-based contributions of this work are: approaches and the latter as toolkit-based deep approaches. Surface-based approaches allow modifications to GUI • We present the WADE prototype along with its software elements without access to the internal structure of an architecture as an integrated solution for significantly application. For example, Façade allows for reconfiguring facilitating add-on creation for third party software GUI elements via a simple drag and drop interface [14]. without source code. However, such approaches are limited by their ability to • The WADE IDE provides scaffolding for code-based infer the structure and functionality of the interface because GUI modification through template generation, thereby they do not have access to the internal program objects or enabling robust implementation of the complex their semantics. E.g., adding new functionality or boilerplate associated with runtime modification. modifying the behavior of a GUI widget is difficult to • We present the results of an empirical comparison accomplish using surface-based approaches [4]. between WADE and the state-of-the-art Scotty approach This limitation can be overcome to some extent by toolkit- for modifying software [4], which shows that WADE is based deep approaches such as Scotty [4] or SubArctic [5], significantly faster for GUI modifications. which operate below the surface of the program to reveal RELATED WORK the underlying program logic and functionalities. This As previously mentioned, surface-based adaptation [2, 3, allows them to alter the system’s appearance and behaviors 14, 15] and toolkit-based subsurface modification [4, 5, 16] beyond the surface level. However, toolkit-based deep are the two main approaches that support third-party approaches can be challenging to use. They require a application modifications without access to the software’s thorough understanding of the relevant parts of the system source code. As a comprehensive review of the different in order to realize the desired behavior. Even for variants of these two approaches has already been discussed experienced developers, much effort is needed to make in Eagan et al. [4], we now highlight those works most relatively simple modifications to third party software. relevant to WADE. Therefore, there exists a trade-off between generalizability, Surface-level modification ease of use, and power (the ability to perform deeper Surface-level modifications do not require any support by modifications). While all previous approaches have their the application developer. Instead, they operate on the advantages, additional solutions are still needed to better interface that is presented to the user and the input events balance the power and ease of use for runtime modification he or she provides. For example, Yeh et al.'s Sikuli of third-party software. scripting environment [1] allows users to write scripts that In this paper, we propose WADE, a simplified and reference screenshots of particular controls, to refer to WSYWYG Add-on Development Environment that can existing application elements. ease the task of modifying GUI-based functions in existing Stuerzlinger et al.'s UI Façades [14] intercept individual software with or without source code, while still enabling widgets as they interact with the window server. This developers to make deep changes to the software behavior. allows a developer to easily replace them at the window To achieve this, WADE injects a dynamically-linked library server level with an alternate implementation, such as by (DLL) into the host program to retrieve the GUI hierarchy regrouping together widgets from different applications or of the host program. It then clones the interface in the IDE replacing a radio button with a pop-down menu. Dixon and so that properties of GUI elements can be directly modified. Fogarty's Prefab [2] examines pixels as they are drawn on Furthermore, WADE provides scaffolding to directly the screen to infer which parts correspond to which widgets. It then allows the interception and replacement of these pixels to change the output of a particular interface. 2. He then exports those changes to a new add-on Combined with input redirection, Prefab can enable component that Ivanov can load into his English copy. alternate software functionality. However, all of these solutions are limited by their ability to infer the structure and functionality of the interface.
Recommended publications
  • Preview Objective-C Tutorial (PDF Version)
    Objective-C Objective-C About the Tutorial Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. This is the main programming language used by Apple for the OS X and iOS operating systems and their respective APIs, Cocoa and Cocoa Touch. This reference will take you through simple and practical approach while learning Objective-C Programming language. Audience This reference has been prepared for the beginners to help them understand basic to advanced concepts related to Objective-C Programming languages. Prerequisites Before you start doing practice with various types of examples given in this reference, I'm making an assumption that you are already aware about what is a computer program, and what is a computer programming language? Copyright & Disclaimer © Copyright 2015 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book can retain a copy for future reference but commercial use of this data is not allowed. Distribution or republishing any content or a part of the content of this e-book in any manner is also not allowed without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] ii Objective-C Table of Contents About the Tutorial ..................................................................................................................................
    [Show full text]
  • Qt Creator Reference Card Mode File Editor Layout Editor Code Editor
    sidebar opened files symbol overview Menu Qt Creator reference card Welcome (Ctrl+1) Edit Mode File (Ctrl+2) Debug Ctrl+1 activate welcome mode Ctrl+N create new file (Ctrl+3) Ctrl+2 activate edit mode Ctrl+Shift+N create new project Projects (Ctrl+4) Ctrl+3 activate debug mode Ctrl+O open file Help Ctrl+4 activate projects mode Ctrl+S save current document (Ctrl+5) Ctrl+5 activate help mode Ctrl+Shift+S save all documents Output Ctrl+6 activate output mode Ctrl+W close current document (Ctrl+6) Esc go back to code editor Ctrl+Shift+W close all documents Esc,Esc close all secondary windows in editor mode Document navigation Editor layout Ctrl+Tab previous document in history Ctrl+E,2 split run(Ctrl+R) Ctrl+Shift+Tab next document in history Ctrl+E,3 split side by side debug(F5) Alt+← go back Ctrl+E,0 remove current split build all Alt+→ go forward Ctrl+E,1 remove all splits (Ctrl+Shift+B) Ctrl+E,O go to other split (Alt+0) quick open (Ctrl+K) (Alt+1) (Alt+2) (Alt+3) (Alt+4) Quick open Editor Code editor Build & debug Ctrl+K activate locator Ctrl+Z undo Ctrl+I auto-indent selection Ctrl+B build current project <text> files in any project Ctrl+Shift+Z redo Ctrl+/ (un)comment selection Ctrl+Shift+B build all projects l <number> line in current document Ctrl+X cut Ctrl+< collapse block Ctrl+R run project m<text> methods Ctrl+C copy Ctrl+> expand block F5 start debugging c <text> classes Ctrl+V paste Ctrl+[ go to block start Shift+F5 stop debugger : <text> classes and methods Ctrl+A select all Ctrl+] go to block end Ctrl+Shift+F5 reset debugger
    [Show full text]
  • Europass Curriculum Vitae
    Europass Curriculum Vitae Personal Information Surname(s) / First name(s) Moreira da Mota, Eduardo Address(es) Rua Padre António Joaquim Freire 4, 4580-878 Bitarães, Portugal Telephone(s) Mobile #1: +351 910 565 777 / Mobile #2: +49 171 101 4297 Email(s) [email protected] Nationality(-ies) Portuguese Date of Birth 24th November 1988 Gender Male Desired employment/ Electrical and Computer Science Engineer Occupational field Work experience Dates Since June 2012 Occupation or position held Research Scholarship Main activities and Development of software in C/C++ for vehicular networks responsibilities Name and address of employer IT Porto – Rua Dr. Roberto Frias s/n, 4200-465 Porto Portugal Type of business or sector Research & Development Dates October 2011 – May 2012 Occupation or position held Software Engineer Main activities and Development of software/hardware in C/C++, Labview and Eagle responsibilities Name and address of employer Wolf-Messtechnik GmbH – Industriestrasse 6, 91126 Schwabach, Germany Type of business or sector Software/Hardware Development for Measuring and Automation Systems Dates February 2011 – July 2011 Occupation or position held Intern Main activities and Master Thesis development, entitled Motion and Teaching of a NAO Robot. responsibilities Research & Development. Level in national or international 18 out of 20 classification Name and address of employer INESC TEC – Rua Dr. Roberto Frias 378, 4200-465 Porto Portugal Type of business or sector Research & Development Education and training Dates September
    [Show full text]
  • “A Magnetzed Needle and a Steady Hand”
    “A Magne)zed Needle and a Steady Hand” Alternaves in the modern world of Integrated Development Environments Jennifer Wood CSCI 5828 Spring 2012 Real Programmers hp://xkcd.com/378/ For the rest of us • Modern Integrated Development Environments (IDE) – A one-stop shop with mul)ple features that can be easily accessed by the developer (without switching modes or ac)vang other u)li)es) to ease the task of creang soYware – A mul)tude of IDEs exist for each programming language (Java, C++, Python, etc.) and each plaorm (desktops, cell phones, web-based, etc.) – Some IDEs can handle mul)ple programming languages, but most are based in just one – There are many good free IDEs out there, but you can also pay for func)onality from $ to $$$$ – IDEs are like opinions, everyone has one and everyone thinks everyone else's s)nks Why are IDEs a good thing? • They aack many of the sources of accidental difficul)es in soYware development by having: – Real-)me protec)on from fault generang typos and bad syntax – High levels of abstrac)on to keep developers from being forced to redevelop basic (and not so basic) classes and structures for every project – IDE increases the power of many development tools by merging them into one that provides “integrated libraries, unified file formats, and pipes and filters. As a result, conceptual structures that in principle could always call, feed, and use one another can indeed easily do so in prac)ce.” (Brooks, 1987). • A core focus of IDE developers is con)nuous improvement in transparency to minimize searching for func)ons
    [Show full text]
  • Programming Java for OS X
    Programming Java for OS X hat’s so different about Java on a Mac? Pure Java applica- tions run on any operating system that supports Java. W Popular Java tools run on OS X. From the developer’s point of view, Java is Java, no matter where it runs. Users do not agree. To an OS X user, pure Java applications that ignore the feel and features of OS X are less desirable, meaning the customers will take their money elsewhere. Fewer sales translates into unhappy managers and all the awkwardness that follows. In this book, I show how to build GUIs that feel and behave like OS X users expect them to behave. I explain development tools and libraries found on the Mac. I explore bundling of Java applications for deployment on OS X. I also discuss interfacing Java with other languages commonly used on the Mac. This chapter is about the background and basics of Java develop- ment on OS X. I explain the history of Java development. I show you around Apple’s developer Web site. Finally, I go over the IDEs commonly used for Java development on the Mac. In This Chapter Reviewing Apple Java History Exploring the history of Apple embraced Java technologies long before the first version of Java on Apple computers OS X graced a blue and white Mac tower. Refugees from the old Installing developer tan Macs of the 1990s may vaguely remember using what was tools on OS X called the MRJ when their PC counterparts were busy using JVMs. Looking at the MRJ stands for Mac OS Runtime for Java.
    [Show full text]
  • Extending Qt Creator (Without Writing Code)
    Extending Qt Creator (without writing code) Tobias Hunger Configuration Configuration User configuration ● ~/.config/QtProject/(QtCreator*|qtcreator/*) ● Can be changed by “-settingspath <path>” argument ● sqlite db + .ini file ● XML files (and more) in qtcreator subfolder ● Leave alone ● Possible exception: Sessions (*.qws) Configuration System wide configuration ● ../share/qtcreator/QtProject/* ● Same as above (without sqlite file) ● XML files, .ini-file ● Use sdktool to edit XML files Configuration Project configuration ● .user and .shared file ● XML files ● No tool for .shared file, leave .user alone ● Do not check in .user files! Built-in Tools Editors Generic Highlighters ● Configure via Tools>Options> Text Editor> Generic Highlighter ● or by putting files into ../share/qtcreator/ generic-highlighter Editors Macros ● Custom complex edit operations ● Configure via Tools>Macros ● No global configuration, user configuration in .../QtProject/qtcreator/macros (binary files) Documentation Custom Documentation ● Configure via Tools>Options> Help>Documentation ● or by putting [Help] InstalledDocumentation=/path/to/dir (Comma separated list of paths) into QtCreator.ini Debugger ● GDB/LLDB Python code in shared/qtcreator/dumper/qttypes.py or register own files in Tools>Options>Debugger>GDB> Additional Startup Commands – qtdump__type__name(d, value) – qtedit__type__name(d, value) ● CDB C++ code in src/libs/qtcreatorcdbext (Qt Creator sources!) Designer ● Designer plugins for custom widgets Pitfall: Plugin needs to be built for Qt Creator, not for your project! ● Qml Designer offers similar feature for custom QML components Projects ● Custom Build-/Clean-/Deploy Steps ● Run Custom Executables ● Environment ● Variable Substitution: – %{CurrentBuild:Name}, – %{CurrentProject:FilePath}, – %{CurrentDocument:Row}, – %{CurrentKit:Id}, ... many more! External Tools External Tools ● Run stand-alone tools from Qt Creator – Configure executable, arguments, stdin, etc.
    [Show full text]
  • LAZARUS FREE PASCAL Développement Rapide
    LAZARUS FREE PASCAL Développement rapide Matthieu GIROUX Programmation Livre de coaching créatif par les solutions ISBN 9791092732214 et 9782953125177 Éditions LIBERLOG Éditeur n° 978-2-9531251 Droits d'auteur RENNES 2009 Dépôt Légal RENNES 2010 Sommaire A) À lire................................................................................................................5 B) LAZARUS FREE PASCAL.............................................................................9 C) Programmer facilement..................................................................................25 D) Le langage PASCAL......................................................................................44 E) Calculs et types complexes.............................................................................60 F) Les boucles.....................................................................................................74 G) Créer ses propres types..................................................................................81 H) Programmation procédurale avancée.............................................................95 I) Gérer les erreurs............................................................................................105 J) Ma première application................................................................................115 K) Bien développer...........................................................................................123 L) L'Objet..........................................................................................................129
    [Show full text]
  • MICHEL (WOLF.LU) Automotive Embedded Software Developer
    MICHEL (WOLF.LU) automotive embedded software developer PROFILE CONTACT I am a Software Developer with over 7 years of Address : 10, Rue de Zoufftgen professional experience in position with top notch 57330 ROUSSY LE VILLAGE - France automotive organizations, mentored software Phone : +33 6 74 63 97 90 developer, brilliant and innovative thinking ability, E-Mail : [email protected] professional and simplified approach in organization. LinkedIn : linkedin.com/michelwolflux I also have several web experiences in freelance or as part of a self-built website. LANGUAGES PROFESSIONAL EXPERIENCES French DELPHI TECHNOLOGIES August 2017-Present English Software Developer German • Responsible for analysis of requirements, design and coding of product SKILLS software for engine control modules. • Generates software code for real-time embedded systems. System : Arduino, Rasberry Pi, Windows XP/7/10, Unix (Shell programmation) FREELANCE June 2016-July 2017 Front End Web Developer Language : .Net, Apache Velocity, C, C#, C++, Java SE, PHP, Perl, Python, Qt, UML, Visual • Development of responsive websites using HTML5, CSS3 and Basic JavaScript. • Search Engine Optimization to increase business online conversion Web : Ajax, CSS3, Bootstrap 3, HTML5, Ionic, rate. Javascript, jQuery BRACE AUTOMOTIVE October 2013-May 2016 Database : MSSQL, MySQL Software Architect Software : ClearQuest, Eclipse, Enterprise • Development on Polarion software to ensure the completeness of the Architect, Git, Qt Creator, Telelogic Synergy, information about every step of development process. Introduction to WinCVS, Tortoise SVN, WAMP, PlasticSCM, Application Lifecycle Management. Trace32, Etas Inca • Development of a cross-company solution (AE-ISSUE) to ease the exchange of work requests, to ensure consistencies and to improve Quality : Object Oriented Software, the tracking of customer requirements implementation.
    [Show full text]
  • B-Human 2018
    Team Report and Code Release 2018 Thomas R¨ofer1;2, Tim Laue2, Arne Hasselbring2, Jannik Heyen2, Bernd Poppinga2, Philip Reichenberg2, Enno R¨ohrig2, Felix Thielke2 1 Deutsches Forschungszentrum f¨urK¨unstliche Intelligenz, Enrique-Schmidt-Str. 5, 28359 Bremen, Germany 2 Universit¨atBremen, Fachbereich 3, Postfach 330440, 28334 Bremen, Germany Revision: November 14, 2018 Contents 1 Introduction 4 1.1 About Us........................................4 1.2 About the Document..................................4 2 Getting Started6 2.1 Download........................................6 2.2 Components and Configurations...........................7 2.3 Building the Code...................................8 2.3.1 Project Generation...............................8 2.3.2 Visual Studio on Windows...........................8 2.3.3 Xcode on macOS................................9 2.3.4 Linux...................................... 10 2.4 Setting Up the NAO.................................. 11 2.4.1 Requirements.................................. 11 2.4.2 Installing the Operating System....................... 12 2.4.3 Creating Robot Configuration Files for a NAO............... 12 2.4.4 Managing Wireless Configurations...................... 13 2.4.5 Installing the Robot.............................. 13 2.5 Copying the Compiled Code.............................. 13 2.6 Working with the NAO................................ 14 2.7 Starting SimRobot................................... 15 2.8 Calibrating the Robots................................. 16 2.8.1 Overall Physical
    [Show full text]
  • Installing a Development Environment
    IBM TRIRIGA Anywhere Version 10 Release 4.2 Installing a development environment IBM Note Before using this information and the product it supports, read the information in “Notices” on page 13. This edition applies to version 10, release 4, modification 2 of IBM TRIRIGA Anywhere and to all subsequent releases and modifications until otherwise indicated in new editions. © Copyright IBM Corporation 2014, 2015. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Chapter 1. Preparing the IBM TRIRIGA Trademarks .............. 15 Anywhere environment ........ 1 Installing the Android development tools..... 1 Installing the iOS development tools ...... 3 Installing the Windows development tools .... 5 Chapter 2. Installing IBM TRIRIGA Anywhere .............. 7 Chapter 3. Installing an integrated development environment ....... 9 Chapter 4. Deploying apps by using MobileFirst Studio .......... 11 Notices .............. 13 Privacy Policy Considerations ........ 14 © Copyright IBM Corp. 2014, 2015 iii iv Installing a development environment Chapter 1. Preparing the IBM TRIRIGA Anywhere environment Before you can build and deploy the IBM® TRIRIGA® Anywhere Work Task Management app, you must set up the computer on which IBM TRIRIGA Anywhere is installed. Procedure 1. Prepare the environment for building the app: Android Install the Android development tools. iOS Install the iOS development tools. Windows Install the Windows development tools 2. Install IBM TRIRIGA Anywhere 3. Optional: Install an integrated development environment. 4. Deploy the app with MobileFirst Studio. Installing the Android development tools Oracle JDK and Android SDK are required to build Android mobile apps. About this task If you install the integrated development environment, which includes MobileFirst Studio and Eclipse, you must also install the Android Development Tools (ADT) plug-in.
    [Show full text]
  • Qt Camera Manager Technical Guide
    Qt Camera Manager Technical guide by Thomas Dubrulle and Antonin Durey with Tomas Holt and Grethe Sandstrak collaboration 2014 edition 1/15 2/15 Table of contents I) Setup the environment 4 1.1) On Windows............................................................................4 1.1.1) Qt......................................................................................................................................4 1.1.2) FlyCapture........................................................................................................................4 1.1.3) Integrated Development Environment (IDE)...................................................................5 1.2) On Linux.................................................................................7 1.2.1) Ubuntu..............................................................................................................................7 1.3) Checking..................................................................................7 II) Implementation 8 2.1) QtCreator and main................................................................8 2.2) MainWindow...........................................................................8 2.2.1) Main presentation.............................................................................................................8 2.2.2) Camera Tree......................................................................................................................9 2.2.3) Project Tree.......................................................................................................................9
    [Show full text]
  • A Comparison of C++, C#, Java, and PHP in the Context of E-Learning
    A Comparison of C++, C#, Java, and PHP in the context of e-learning MIKAEL OLSSON KTH Information and Communication Technology Master of Science Thesis Stockholm, Sweden 2009 TRITA-ICT-EX-2009:8 A Comparison of C++, C#, Java, and PHP in the context of e‐learning Mikael Olsson April 30, 2009 Master’s Thesis in Computer Science Royal Institute of Technology Examiner: Prof. Gerald Q. Maguire Jr. ‐ i ‐ Abstract The first part of this master thesis presents an effective method for producing video tutorials. This method was used during this thesis project to create tutorials on the e- learning site PVT (http://www.programmingvideotutorials.com). Part one also discloses how the production method was developed and how tutorials produced using this method compare to professional video tutorials. Finally, it evaluates the result of this thesis work and the efficiency of the production method. The second part of this thesis compares the syntactical similarities and differences between four of the languages taught via video tutorials for PVT. These languages are: C++, C#, Java, and PHP. The purpose of this comparison is to provide a bridge for programmers knowing one of these languages to rapidly learn one or more of the other languages. The reason why this would be necessary is because there is no single language suited for every area of software development. Knowing a multitude of languages gives a programmer a wider range of job opportunities and more choices in how to solve their problems. Part two of the thesis also includes a comparison of Java and C# in the context of a video tutorial series that shows how to build a basic text editor.
    [Show full text]