Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Home
Quick Start
Recent changes
Contributors
Start Contributing
Modify Existing Pages
Add New Pages
Page Elements Explained
Display elements markup
More Markup Help
Translators
Get a Translator Account
Languages represented
Working with Languages
Start Translating
Request Release
Search
Search
English
Log in
Personal tools
Log in
Export translations
Translate
English
Language statistics
Message group statistics
Export
Tools
Tools
move to sidebar
hide
Actions
Language statistics
Message group statistics
Export
General
Special pages
Printable version
Settings
Group
Accessibility
Accessibility/Application Overview
Accessibility/Plasma
Adding an entry to the Create New menu
Akonadi
Akonadi and AddressBook
Akonadi/Postgres update
Akregator
Akregator/Tutorials/How to get RSS from a Wordpress blog?
Amarok
Amarok Manual
Amarok/Manual
Amarok/Manual/AmarokWindow
Amarok/Manual/AmarokWindow/ContextPane
Amarok/Manual/AmarokWindow/MediaSources
Amarok/Manual/AmarokWindow/PlaylistPane
Amarok/Manual/AmarokWindow/Toolbar
Amarok/Manual/ConfiguringAmarok
Amarok/Manual/ConfiguringAmarok/ChangingLayout
Amarok/Manual/Introduction
Amarok/Manual/Organization
Amarok/Manual/Organization/Applets
Amarok/Manual/Organization/Collection
Amarok/Manual/Organization/Collection/ExternalDatabase
Amarok/Manual/Organization/Collection/OrganizeCollection
Amarok/Manual/Organization/Collection/RemoteCollections
Amarok/Manual/Organization/Collection/RemoteCollections/Ampache
Amarok/Manual/Organization/Collection/RemoteCollections/DAAP
Amarok/Manual/Organization/Collection/RemoteCollections/Samba
Amarok/Manual/Organization/Collection/RemoteCollections/UPnP
Amarok/Manual/Organization/Collection/SearchInCollection
Amarok/Manual/Organization/Collection/StatisticsSynchronization
Amarok/Manual/Organization/Collection/WorkingWithMediaDevices
Amarok/Manual/Organization/CollectionScanning
Amarok/Manual/Organization/CoverManager
Amarok/Manual/Organization/ScriptManager
Amarok/Manual/Organization/TagEditor
Amarok/Manual/Organization/Transcoding
Amarok/Manual/Playlist
Amarok/Manual/Playlist/AutomaticPlaylistGenerator
Amarok/Manual/Playlist/DynamicPlaylists
Amarok/Manual/Playlist/PlaylistFiltering
Amarok/Manual/Playlist/QueueManager
Amarok/Manual/Playlist/SavedPlaylists
Amarok/Manual/References
Amarok/Manual/References/Credits and License
Amarok/Manual/References/KeybindingReference
Amarok/Manual/References/KeybindingReference/AmarokShortcuts
Amarok/Manual/References/KeybindingReference/GlobalShortcuts
Amarok/Manual/References/MenuAndCommandReference
Amarok/Manual/References/MenuAndCommandReference/AmarokMenu
Amarok/Manual/References/MenuAndCommandReference/Help
Amarok/Manual/References/MenuAndCommandReference/Playlist
Amarok/Manual/References/MenuAndCommandReference/Settings
Amarok/Manual/References/MenuAndCommandReference/Tools
Amarok/Manual/References/MenuAndCommandReference/ViewMenu
Amarok/Manual/Various
Amarok/Manual/Various/AmarokOnOtherPlatforms
Amarok/Manual/Various/AmarokOnOtherPlatforms/NonKDE Desktops
Amarok/Manual/Various/AmarokOnOtherPlatforms/OSX
Amarok/Manual/Various/AmarokOnOtherPlatforms/Windows
Amarok/Manual/Various/FAQ
Amarok/Manual/Various/Moodbar
Amarok/Manual/Various/ReplayGain
Amarok/Manual/Various/TroubleshootingAndCommonProblems
Amarok/QuickStartGuide
Amarok/QuickStartGuide/GettingStarted
Amarok/QuickStartGuide/Glossary
Amarok/QuickStartGuide/HowToDealWithProblems
Amarok/QuickStartGuide/Playlists
Amarok/QuickStartGuide/TheAmarokWindow
Amarok/QuickStartGuide/TheContextView
Amarok/QuickStartGuide/TheMusicCollection
An introduction to KDE
Apper
Applications
Applications/Accessibility
Applications/Desktop
Applications/Development
Applications/Education
Applications/Games
Applications/Graphics
Applications/Internet
Applications/Multimedia
Applications/Office
Applications/Science
Applications/System
Applications/Utilities
Archive:Artikulate
Archive:Browser Configuration/Firefox Dialog Integration
Archive:Build your first KDE application on Kubuntu
Archive:ChoqoK
Archive:Kde-pim
Archive:Kdenlive/Manual/Capturing
Archive:Kdenlive/Manual/CapturingAudio
Archive:Kdenlive/Manual/Clip Menu
Archive:Kdenlive/Manual/Credits and License
Archive:Kdenlive/Manual/Edit Menu
Archive:Kdenlive/Manual/Edit Menu/Copy
Archive:Kdenlive/Manual/Edit Menu/Paste
Archive:Kdenlive/Manual/Edit Menu/Paste Effects
Archive:Kdenlive/Manual/Edit Menu/Redo
Archive:Kdenlive/Manual/Edit Menu/Undo
Archive:Kdenlive/Manual/Effects/Alpha manipulation
Archive:Kdenlive/Manual/Effects/Alpha manipulation/Alpha operations
Archive:Kdenlive/Manual/Effects/Alpha manipulation/Alpha shapes
Archive:Kdenlive/Manual/Effects/Alpha manipulation/Blue Screen
Archive:Kdenlive/Manual/Effects/Alpha manipulation/Color Selection
Archive:Kdenlive/Manual/Effects/Alpha manipulation/Rotoscoping
Archive:Kdenlive/Manual/Effects/Analysis and Data
Archive:Kdenlive/Manual/Effects/Artistic
Archive:Kdenlive/Manual/Effects/Audio channels
Archive:Kdenlive/Manual/Effects/Audio Correction
Archive:Kdenlive/Manual/Effects/Blur and hide
Archive:Kdenlive/Manual/Effects/Blur and hide/Auto Mask
Archive:Kdenlive/Manual/Effects/Colour Correction
Archive:Kdenlive/Manual/Effects/Colour Correction/RGB adjustment
Archive:Kdenlive/Manual/Effects/Crop and transform
Archive:Kdenlive/Manual/Effects/Crop and transform/Pan and Zoom
Archive:Kdenlive/Manual/Effects/Custom
Archive:Kdenlive/Manual/Effects/Distort
Archive:Kdenlive/Manual/Effects/Enhancement
Archive:Kdenlive/Manual/Effects/Fade
Archive:Kdenlive/Manual/Effects/Fun
Archive:Kdenlive/Manual/Effects/Misc
Archive:Kdenlive/Manual/Effects/Motion
Archive:Kdenlive/Manual/File Menu
Archive:Kdenlive/Manual/File Menu/DVD Wizard
Archive:Kdenlive/Manual/File Menu/New
Archive:Kdenlive/Manual/File Menu/Open
Archive:Kdenlive/Manual/File Menu/Open Recent
Archive:Kdenlive/Manual/File Menu/Quit
Archive:Kdenlive/Manual/File Menu/Revert
Archive:Kdenlive/Manual/File Menu/Save
Archive:Kdenlive/Manual/File Menu/Save As
Archive:Kdenlive/Manual/File Menu/Transcode Clips
Archive:Kdenlive/Manual/Introduction
Archive:Kdenlive/Manual/KdenliveOnOtherPlatforms
Archive:Kdenlive/Manual/KdenliveOnOtherPlatforms/Non-KDE Desktops
Archive:Kdenlive/Manual/KdenliveOnOtherPlatforms/OSX
Archive:Kdenlive/Manual/Menu
Archive:Kdenlive/Manual/Monitor Menu
Archive:Kdenlive/Manual/Monitors
Archive:Kdenlive/Manual/Project Menu
Archive:Kdenlive/Manual/Project Menu/Render
Archive:Kdenlive/Manual/Project Menu/Render/Render Profile Parameters
Archive:Kdenlive/Manual/Projects and Files
Archive:Kdenlive/Manual/Projects and Files/Archiving
Archive:Kdenlive/Manual/Projects and Files/Backup
Archive:Kdenlive/Manual/Projects and Files/Clips
Archive:Kdenlive/Manual/Projects and Files/Importing
Archive:Kdenlive/Manual/Projects and Files/Management
Archive:Kdenlive/Manual/Projects and Files/Notes
Archive:Kdenlive/Manual/Projects and Files/Project
Archive:Kdenlive/Manual/Projects and Files/Project Settings
Archive:Kdenlive/Manual/Projects and Files/Project Tree
Archive:Kdenlive/Manual/Rendering
Archive:Kdenlive/Manual/Settings Menu
Archive:Kdenlive/Manual/ShootingHints
Archive:Kdenlive/Manual/Timeline
Archive:Kdenlive/Manual/Timeline Menu
Archive:Kdenlive/Manual/Timeline/Grouping
Archive:Kdenlive/Manual/Timeline/Guides
Archive:Kdenlive/Manual/Timeline/Right Click Menu
Archive:Kdenlive/Manual/Titles
Archive:Kdenlive/Manual/Tool Menu
Archive:Kdenlive/Manual/Toolbars
Archive:Kdenlive/Manual/Transitions
Archive:Kdenlive/Manual/Troubleshooting and Common Problems
Archive:Kdenlive/Manual/Tutorials
Archive:Kdenlive/Manual/Tutorials/Split Screen How To
Archive:Kdenlive/Manual/Useful Information
Archive:Kdenlive/Manual/Useful Information/FAQ
Archive:Kdenlive/Manual/Useful Information/Shortcuts
Archive:Kdenlive/Manual/Useful Information/Surround Sound
Archive:Kdenlive/Manual/Useful Information/Tips Tricks
Archive:Kdenlive/Manual/Useful Information/Useful Resources
Archive:Kdenlive/Manual/View Menu
Archive:Kdenlive/Manual/Windows Issues
Archive:Kdessh
Archive:KOffice
Archive:KOrganizer/Download
Archive:Obsolete
Ark
Artwork
Asking Questions
Audex
Bangarang
BasKet
BlinKen
Blogilo
Bluedevil
Braindump
Browser Configuration
Browser Configuration/Mousegestures for all Browsers
Browser Configuration/Opera
Calligra
Calligra/Download
Calligra/Handbooks
Cantor
ChoqoK/Using ChoqoK
Color Management
Common Tasks
Concepts/OpenPGP For Beginners
Concepts/OpenPGP Getting Started
Concepts/OpenPGP Help Spread
Configure your desktop
Create a Page
Desktop Effects Performance
Digikam
digiKam
Digikam/Adding Borders To Your Photos
Digikam/AddTextures
Digikam/AspectRatios
Digikam/Assign Keyboard Shortcuts to Tags in digiKam
Digikam/Basic RAW Processing
Digikam/Batch Process
Digikam/Batch Queue Manager and Script
Digikam/Black and White
Digikam/BleachBypassEffect
Digikam/Bugs
Digikam/Calendars
Digikam/Calibrate and Profile Monitor
Digikam/ChangeFormat
Digikam/Check Database
Digikam/Color Labels and Picks
Digikam/Compress
Digikam/Configure the Main Toolbar in digiKam
Digikam/Duplicates
Digikam/Effects
Digikam/Exif
Digikam/Export via DNLA
Digikam/Exposure Blending
Digikam/Face Detection
Digikam/Face Recognition
Digikam/Facebook
Digikam/Faded Effect
Digikam/Geotag Photos with Android
Digikam/Geotagging
Digikam/Geotagging in digiKam 2.0
Digikam/Import Photos in Digikam
Digikam/Lens Correction Using digiKam
Digikam/Lens Distortion
Digikam/Levels Adjust
Digikam/LightTable
Digikam/Local Contrast
Digikam/Maintenance
Digikam/Manage Photos from Multiple digiKam Installations
Digikam/Metadata
Digikam/MetadataToRaw
Digikam/Negatives
Digikam/Noise Reduction
Digikam/Optimise
Digikam/Panorama
Digikam/Performing Fuzzy Searches In digiKam
Digikam/Photoshop Preset Curves
Digikam/Picasa
Digikam/Process RAW Files
Digikam/Quick Tip:Disable Certain File Types
Digikam/RedEye
Digikam/Renaming Photos
Digikam/Sharpening
Digikam/Simple Toning
Digikam/Soft Proofing
Digikam/Straighten
Digikam/TaggingEfficient
Digikam/Tethered Shooting
Digikam/Thumbnails
Digikam/Tour
Digikam/Tutorials
Digikam/Using digiKam with MySQL
Digikam/Using the Advanced Search Tool In digiKam
Digikam/Using XMP Sidecar support in digiKam 2
Digikam/Versioning
Digikam/Vintage Effect
Digikam/Watermark
Digikam/Wikimedia Commons
Digikam/Windows
Discover
Dolphin
Dolphin/Batch Rename
Dolphin/Customize Folder Icon
Dolphin/File Management
Dragon Player
Edit Markup
File transfers
Filelight
Flow
GCompris
General KDE Software FAQs
Getting Help
Getting started with KAlgebra
Glossary
Gluon
Google Talk support
Gwenview
Gwenview/Hidden Configuration Options
Help:Wiki Structure
History of KDE
Homerun
How to chat with other KDE users
How To Convert a UserBase Manual to Docbook
Image Kimdaba
Installing KDE neon
IRC Channels
Jargon File
Jovie
Juk
K3b
K3b/Burn an Audio Cd with K3b
K9Copy
KAddressBook
KAddressBook/index
KAddressBook/Tutorials/How to add a new contact?
KAddressBook/Tutorials/How to create a new address book?
Kaffeine
Kaffeine-TV
KAlarm
KAlgebra
KAlgebra/Console Tab
KAlgebra/Homework
KAlgebra/Probabilities
Kalzium
Kalzium/Other Chemistry-Applications
Kamoso
Kanagram
KAppTemplate
Karbon
Karbon/Tutorials/Artistic Text Shape
Kate
Kbarcode
KBibTeX
KBibTeX/Development
Kbluetooth
KBruch
KCalc
KCells
KCharSelect
KChart
KColorChooser
KColorEdit
KDbg
KDE Connect/Tutorials/Adding commands
KDE Connect/Tutorials/Useful commands
KDE Partition Manager
KDE preinstalled
KDE SVN
KDE System Administration
KDE UserBase Wiki:About
KDE UserBase Wiki:General disclaimer
KDE UserBase Wiki:Privacy policy
KDE Wallet Manager
KDEConnect
Kdenlive
Kdenlive/Manual
Kdenlive/Manual/alpha operation transitions
Kdenlive/Manual/BugReporting
Kdenlive/Manual/Clip Menu/Delete Clip
Kdenlive/Manual/Clip Menu/Edit Clip
Kdenlive/Manual/Clip Menu/Extract Audio
Kdenlive/Manual/Clip Menu/Locate Clip
Kdenlive/Manual/Clip Menu/Rename Clip
Kdenlive/Manual/Clip Menu/Stabilize
Kdenlive/Manual/Edit Menu/Find
Kdenlive/Manual/Effects
Kdenlive/Manual/Effects And Transitions
Kdenlive/Manual/Effects/Audio
Kdenlive/Manual/Full Luma
Kdenlive/Manual/Installation
Kdenlive/Manual/Project Menu/Create Folder
Kdenlive/Manual/Project Menu/Online Resources
Kdenlive/Manual/QuickStart
Kdenlive/Manual/Timeline Menu/Insert Clip Zone
Kdenlive/Manual/Timeline Menu/Tracks
Kdenlive/Manual/Timeline/Editing
Kdenlive/Manual/Titles/Download New Title Templates
Kdenlive/Manual/Transitions/Affine
Kdenlive/Manual/Transitions/alphaxor
Kdenlive/Manual/Transitions/Composite
Kdenlive/Manual/Transitions/Hue
Kdenlive/Manual/Transitions/screen
Kdenlive/Manual/Transitions/Wipe
Kdenlive/Manual/View Menu/Audio Spectrum
Kdenlive/Manual/View Menu/Clip Monitor
Kdenlive/Manual/View Menu/Effect List
Kdenlive/Manual/View Menu/Load Layout
Kdenlive/Manual/View Menu/Save Layout As
Kdenlive/Manual/View Menu/Screen Grab
Kdenlive/Manual/View Menu/Show Title Bars
Kdenlive/Manual/View Menu/Undo History
Kdesvn
KDevelop
KDevelop/Install4.5
KDevelop4
KDevelop4/FAQ
KDevelop4/Manual
KDevelop4/Manual/Appendix A: Building KDevelop from Sources
KDevelop4/Manual/Building (compiling) projects with custom Makefiles
KDevelop4/Manual/Code generation with templates
KDevelop4/Manual/Customizing KDevelop
KDevelop4/Manual/Debugging programs
Kdevelop4/Manual/Meet KDevelop
KDevelop4/Manual/Running programs
KDevelop4/Manual/Sessions and projects
KDevelop4/Manual/Working with source code
KDevelop4/Manual/Working with version control systems
KDevelop4/TipsAndTricks
KDevelop5 Manual
KDevelop5/Manual
KDevelop5/Manual/Appendix A: Building KDevelop from Sources
KDevelop5/Manual/Building (compiling) projects with custom Makefiles
KDevelop5/Manual/Code generation with templates
KDevelop5/Manual/Customizing KDevelop
KDevelop5/Manual/Debugging programs
Kdevelop5/Manual/Meet KDevelop
KDevelop5/Manual/Running programs
KDevelop5/Manual/Sessions and projects
KDevelop5/Manual/Working with source code
KDevelop5/Manual/Working with version control systems
KDiff3
KDirStat
KDiskFree
KEuroCalc
Kexi
Kexi Handbook
Kexi/Handbook
Kexi/Handbook/Appendix B. Comparing Kexi to other database applications
Kexi/Handbook/Building Simple Databases
Kexi/Handbook/Building Simple Databases/Designing Database Queries
Kexi/Handbook/Building Simple Databases/Designing Database Tables
Kexi/Handbook/Building Simple Databases/Designing Database Tables/The Table Designer window
Kexi/Handbook/Building Simple Databases/Designing Forms
Kexi/Handbook/Building Simple Databases/Designing Forms/Actions
Kexi/Handbook/Building Simple Databases/Designing Forms/Assigning data sources
Kexi/Handbook/Building Simple Databases/Designing Forms/Forms versus tables
Kexi/Handbook/Building Simple Databases/Designing Forms/Inserting text labels
Kexi/Handbook/Building Simple Databases/Designing Forms/Inserting widgets - text fields
Kexi/Handbook/Building Simple Databases/Designing Forms/Most important terms
Kexi/Handbook/Building Simple Databases/Designing Forms/Setting the tab order
Kexi/Handbook/Building Simple Databases/Designing Forms/Setting widgets size and position by hand
Kexi/Handbook/Building Simple Databases/Designing Forms/Using the Widgets tab
Kexi/Handbook/Building Simple Databases/Designing Forms/Widget layouts
Kexi/Handbook/Building Simple Databases/Designing Forms/Working with form design
Kexi/Handbook/Building Simple Databases/Entering Data Into Tables
Kexi/Handbook/Building Simple Databases/Entering Data Using Forms
Kexi/Handbook/Configuring Kexi
Kexi/Handbook/Configuring Kexi/Docking and undocking side panels
Kexi/Handbook/Credits and License
Kexi/Handbook/Introduction
Kexi/Handbook/Introduction to Databases/Database and Spreadsheet
Kexi/Handbook/Introduction to Databases/Database Creation Software
Kexi/Handbook/Introduction to Databases/Database Design
Kexi/Handbook/Introduction to Databases/What Is a Database?
Kexi/Handbook/Introduction to Databases/Who Needs a Database?
Kexi/Handbook/Kexi Basics
Kexi/Handbook/Kexi Basics/Creating a New Database File
Kexi/Handbook/Kexi Basics/Kexi Databases
Kexi/Handbook/Kexi Basics/Opening an existing Kexi database file
Kexi/Handbook/Kexi Basics/Opening an existing Kexi database file/Opening a database file in the Open Existing Project dialog
Kexi/Handbook/Kexi Basics/Opening an existing Kexi database file/Opening an existing Kexi database file by clicking on .kexi file's icon
Kexi/Handbook/Kexi Basics/The Kexi Main Window
Kexi/Handbook/Kexi Basics/Using built-in help
Kexi/Handbook/References/Command-Line Options
Kexi/Handbook/Where to go next
Kexi/Tutorials
Kexi/Tutorials/Drilling Down on Facebook Data
Kexi/Tutorials/Importing SQLite database into Kexi
Kexi/Tutorials/Reports/Kexi Reports for Beginners
KFileReplace
KFind
KFloppy
KFormula
KFTPgrabber
KGeography
KGeography/Making Maps
KGet
KGpg
KGraphviewer
KHangMan
KHelpCenter
KIconEdit
Kid3
Kig
Kig/FAQ
Kig/Screenshots
Kile
KImageMapEditor
KInfoCenter
Kio gopher
Kio-audiocd
KIPI
Kiten
Kivio
KJots
KJots/Import KNowIt Into KJots
KJots/Recover Deleted KJots Books
Kleopatra
KLettres
KLinkStatus
Klipper
Klipper/How to search in phone books using Klipper
Klipper/Pastebins
KMag
KMail
KMail/Account Wizard
KMail/Backup Options
Kmail/Configuring Kmail
Kmail/Configuring Kmail/Identities
KMail/Courses Information Openpgp
KMail/Devs
Kmail/Distributions/Gentoo
Kmail/Distributions/OpenSUSE
KMail/FAQs Hints and Tips
Kmail/Folder Properties
Kmail/Getting Started
KMail/gpg
KMail/Import Options
KMail/PGP MIME
KMail/Screenshots
KMail/Tools
Kmail/Using Folders
Kmail/Using Kmail General
KMediaFactory
KMess
KMid
KMix
KMLDonkey
KMouseTool
KMouth
KMPlayer
KmPlot
KmPlot/Using Sliders
KMyMoney
KNemo
KNetworkManager
KNode
KNode/KNode for mailing lists
KNotes
Koko
KolorManager
KolourPaint
Kompare
Konqueror
Konqueror/Web Shortcuts
Konsole
KonsoleDevelopment
KonsoleKalendar
Kontact
Kontact Touch
Kontact Touch/About
Kontact Touch/Harmattan
Kontact Touch/Maemo5
Kontact Touch/MeeGo
Kontact Touch/Screenshots
Kontact Touch/WinCE
Kontact/Kontact Palm Pre Sync
Kontact/SMS
Konversation
Konversation/Browsers
Konversation/Configuring SASL authentication
Konversation/Distributions
Konversation/Distributions/ArchLinux
Konversation/Distributions/ArkLinux
Konversation/Distributions/Chakra
Konversation/Distributions/Exherbo
Konversation/Distributions/Fedora
Konversation/Distributions/Gentoo
Konversation/Distributions/Kubuntu
Konversation/Distributions/Mageia
Konversation/Distributions/openSUSE
Konversation/Distributions/PCLinuxOS
Konversation/Distributions/Slackware
Konversation/Distributions/Xandros
Konversation/FAQ
Konversation/KDE3 Sources
Konversation/KDE4 Sources
Konversation/Releases
Konversation/Scripts/Ghosttrick
Konversation/Scripts/Import mIRC server list
Konversation/Scripts/Media
Konversation/Scripts/Scripting guide
Konversation/Sources
Konversation/Tips and Tricks
Kooka
Kopete
Kopete/AIM
Kopete/Auto Replace
Kopete/Firewall
Kopete/ICQ
Kopete/ICQ/About ICQ
Kopete/ICQ/add friends
Kopete/ICQ/connect through kopete
Kopete/ICQ/creating an account
Kopete/Jabber
Kopete/Jabber Muc
Kopete/Jabber Transport
Kopete/Jabber/About Jabber XMPP
Kopete/Jabber/Adding friends
Kopete/Jabber/Create your Jabber account
Kopete/Jabber/Fill in your account data in Kopete
Kopete/Jabber/First steps
Kopete/Jabber/Messaging and sending files
Kopete/Jabber/More info on Kopete
Kopete/Jabber/Useful configuration hints
Kopete/MSN
Kopete/OTR
Kopete/Skype Plugin
Kopete/Supported Protocols Overview
Kopete/Webcam Support
Kopete/Winpopup
Kopete/Yahoo
KOrganizer
KOrganizer/Alarms
KOrganizer/Appointments
KOrganizer/Calendar
KOrganizer/Custom
KOrganizer/Future
KOrganizer/ImpData
KOrganizer/Links
KOrganizer/Screenshots
KOrganizer/ToDo
KOrganizer/Web
KPackage
KPackageKit
KPager
KPDF
KPhotoAlbum
KPhotoAlbum FAQ
KPilot
KPlato
KPlayer
KPPP
Kraft
Krdc
Krecipes
KRename
Krfb
Kronometer
KrossWordPuzzle
KrossWordPuzzle/Crossword Types
KrossWordPuzzle/Settings
KrossWordPuzzle/Using KrossWordPuzzle
KRuler
Krusader
Krusader/How To Add Folder Shortcuts on Krusader Toolbar
KsCD
KSnapshot
KSniffer
KStars
KSysGuard
KSystemLog
KTechlab
KtikZ
KTimer
KTimeTracker
KTorrent
KTouch
KTouch/HowTo/DifferentKeyboardLayout
KTurtle
KTurtle/Examples
KTux
Kubuntu
Kubuntu/Advanced
Kubuntu/Advanced/Repositories
Kubuntu/Basic
Kubuntu/Contribute
Kubuntu/Installation
Kubuntu/Software
Kubuntu/Software/Games/Steam
Kubuntu/Support
Kubuntu/Welcome
KuickShow
KUIViewer
KUser
Kwave
KWin
KWin Rules
KWin Rules Application Workarounds
KWin Rules Examples
KWin Rules Window Attributes
KWin Rules Window Matching
KWin/Gallery
Kwlan
KWord
KWord/Manual
KWord/Manual/Introduction
KWord/Manual/IntroGUI
KWord/Tutorials
KWord/Tutorials/BasicLayout
KWord/Tutorials/SecondLayout
KWord/Tutorials/ThirdLayout
KWordQuiz
KWrite
KXStitch
LabPlot
Lancelot
Lancelot/Comparison
Lancelot/Discover Lancelot
Latte Dock
LatteDock
LatteDock/FAQ
LatteDock/How to report multi screen issues
LatteDock/HowToReportCrashes
LatteDock/TipsAndTricks
LemonPOS
List of KDE themes with GTK ports
Live CDs - a way to choose your distro
Lokalize
Mailing Lists
Marble
Marble/Bookmarks
Marble/Maemo/GuidanceMode
Marble/Maemo/Installation
Marble/Maemo/OfflineRouting
Marble/MapThemes
Marble/Search
Marble/Tracking
Minuet
Modify a Page
Neon/Installation/OEM
Neon/LTS/EOL
Nepomuk
Nepomuk/FileIndexer
Nepomuk/kioslaves/tags
NetworkManagement
Off-line Translation
Okteta
Okteta/Tutorials
Okular
PageLayout
Pairs
Parley
Parley/Manual
Parley/Manual/How to study vocabulary in multiple choice mode
Peruse
Phonon
Phonon/Handbook
Plan
Plan/Engineering To Order project tutorial
Plan/Engineering To Order project tutorial/executing
Plan/Engineering To Order project tutorial/planning
Plan/Manual/Definitions
Plan/Manual/Introduction
Plan/Tutorials
Plasma
Plasma application launchers
Plasma-browser-integration
Plasma/Application Dashboard
Plasma/Clocks
Plasma/ColorPicker
Plasma/Create a Global Theme Package
Plasma/DeviceNotifier
Plasma/FAQ/4.4
Plasma/FAQ/4.4/Configuration
Plasma/FAQ/5.10
Plasma/FAQ/5.10/Configuration
Plasma/FAQ/Index
Plasma/GroupingDesktop
Plasma/HowTo/4.5
Plasma/HowTo/Index
Plasma/Installing Plasmoids
Plasma/Kicker
Plasma/Kickoff
Plasma/Krunner
Plasma/Netbooks
Plasma/NetworkMonitor
Plasma/Pager
Plasma/Panels
Plasma/PictureFrame
Plasma/Plasmoids
Plasma/Public Transport
Plasma/Public Transport/CreateServiceProviders
Plasma/Public Transport/NewServiceProviders
Plasma/Public Transport/ServiceProviders
Plasma/SystemTray
Plasma/Tasks
Plasma/TweakingPlasma
Plasmate
PulseAudio
QCA
Quanta
Quanta RefreshDoc
Quanta RefreshDoc script
Quassel
Quick Start
Raptor
Raw to DNG
Rekonq
Rekonq/FAQs
Rekonq/Manual
Rekonq/Manual/Introduction
Rekonq/Manual/UI
RKWard
Rocs
RSIBreak
Semantik
Session Environment Variables
Sheets
Showcase
Showfoto
Showfoto/Brightness
Showfoto/Curves Adjust
Showfoto/Levels Adjust
Showfoto/Perspective
Showfoto/White Balance
Simon/Installation
Simon/Shadow dictionary
Skanlite
Skrooge
Smb4K
SMPlayer
Software from Source
Sound Problems
Sound Problems/External Sound Cards
Spectacle
Spectacle/Tutorials/Invoking Spectacle with custom shortcuts
Stage
Step
Summary
Sweeper
SymbolEditor
System Activity
System Settings
System Settings/Accessibility
System Settings/Account Details
System Settings/Activities
System Settings/Appearance
System Settings/Application Style
System Settings/Applications
System Settings/Autostart
System Settings/Color
System Settings/Connections
System Settings/Date & Time
System Settings/Default Applications
System Settings/Desktop Behavior
System Settings/Desktop Effects
System Settings/Desktop Session
System Settings/Emoticon Theme
System Settings/File Associations
System Settings/File Search
System Settings/Font
System Settings/Font Management
System Settings/Fonts (Category)
System Settings/Formats
System Settings/GNOME Application Style (GTK)
System Settings/Icon Theme
System Settings/Icons
System Settings/Input Devices
System Settings/KDE Wallet
System Settings/Keyboard
System Settings/Language
System Settings/Launch Feedback
System Settings/Locale/How To Install and Apply Interface Translation
System Settings/Locations
System Settings/Login Screen
System Settings/Look And Feel
System Settings/Mouse
System Settings/Mouse Cursor Theme
System Settings/Notifications
System Settings/Online Accounts
System Settings/Plasma Search
System Settings/Plasma Theme
System Settings/Power Management
System Settings/Printers
System Settings/Regional Settings
System Settings/Removable Storage
System Settings/Screen Edges
System Settings/Screen Locking
System Settings/Search
System Settings/Search Desktop
System Settings/Shortcuts
System Settings/Shortcuts and Gestures
System Settings/Spell Check
System Settings/Splash Screen
System Settings/Startup and Shutdown
System Settings/Task Scheduler
System Settings/Task Switcher
System Settings/Touch Screen
System Settings/Touchpad
System Settings/User Manager
System Settings/Virtual Desktops
System Settings/Web Shortcuts
System Settings/Widget Style
System Settings/Window Behavior
System Settings/Window Behaviour
System Settings/Window Rules
System Settings/Windows Decorations
System Settings/Windows Management
System Settings/Workspace
System Settings/Workspace Appearance
System Settings/Workspace Behaviour
System Settings/Workspace Theme
Table of equivalent applications
Taking Screenshots
Tasks and Tools
Telepathy
Tellico
Tellico/Compiling
Tellico/Templates
Toolbox
Toolbox/Tables
Tools
Translate a Page
Translation Workflow
Trojitá
Troubleshooting
Troubleshooting/Peripherals Problems
Troubleshooting/Samsung scx-4500W
Tutorials
Tutorials/Access another computer's display
Tutorials/Change the color of the blue folder icon
Tutorials/Compose Key Old Version
Tutorials/ComposeKey
Tutorials/Flatpak
Tutorials/Force Transparency And Blur
Tutorials/hotkeys
Tutorials/Install KDE software
Tutorials/KDE3 to KDE SC 4
Tutorials/Keyboard
Tutorials/Kimpanel
Tutorials/Kontact/Office365
Tutorials/MIDI on Linux
Tutorials/Modify KDE Software Defaults
Tutorials/Mouse pointer settings for large displays
Tutorials/Open a console
Tutorials/Shared Database
Tutorials/Using Other Window Managers with Plasma
Typographical Guidelines
Umbrello
Umbrello/FAQ
Update an Image
UserBase/Guidelines
Wacomtablet
Websites
Welcome to KDE UserBase
What is a distribution
What is KDE
Words
Working with GMail
Working with Google Calendar
Working with Google Contacts
Working with MyKolab
Workspace Configuration/Desktop Configuration
Writing an Application Manual
Yakuake
Zanshin
Language
aa - Afar
ab - Abkhazian
abs - Ambonese Malay
ace - Achinese
acm - Iraqi Arabic
ady - Adyghe
ady-cyrl - Adyghe (Cyrillic script)
aeb - Tunisian Arabic
aeb-arab - Tunisian Arabic (Arabic script)
aeb-latn - Tunisian Arabic (Latin script)
af - Afrikaans
aln - Gheg Albanian
alt - Southern Altai
am - Amharic
ami - Amis
an - Aragonese
ang - Old English
ann - Obolo
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
atj - Atikamekw
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - South Azerbaijani
ba - Bashkir
ban - Balinese
ban-bali - Balinese (Balinese script)
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba (Latin script)
bcc - Southern Balochi
bci - Baoulé
bcl - Central Bikol
bdr - West Coast Bajau
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bew - Betawi
bg - Bulgarian
bgn - Western Balochi
bh - Bhojpuri
bho - Bhojpuri
bi - Bislama
bjn - Banjar
blk - Pa'O
bm - Bambara
bn - Bangla
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Buginese
bxr - Russia Buriat
ca - Catalan
cbk-zam - Chavacano
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cpx - Pu-Xian Min
cpx-hans - Pu-Xian Min (Simplified Han script)
cpx-hant - Pu-Xian Min (Traditional Han script)
cpx-latn - Pu-Xian Min (Latin script)
cr - Cree
crh - Crimean Tatar
crh-cyrl - Crimean Tatar (Cyrillic script)
crh-latn - Crimean Tatar (Latin script)
crh-ro - Crimean Tatar (Romania)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
dag - Dagbani
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
dga - Dagaare
din - Dinka
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - Doteli
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
es-419 - Latin American Spanish
es-formal - Spanish (formal address)
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
fat - Fanti
ff - Fula
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fon - Fon
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gaa - Ga
gag - Gagauz
gan - Gan Chinese
gan-hans - Gan (Simplified)
gan-hant - Gan (Traditional)
gcr - Guianan Creole
gd - Scottish Gaelic
gl - Galician
gld - Nanai
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
gor - Gorontalo
got - Gothic
gpe - Ghanaian Pidgin
grc - Ancient Greek
gsw - Alemannic
gu - Gujarati
guc - Wayuu
gur - Frafra
guw - Gun
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
hno - Northern Hindko
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
hsn - Xiang Chinese
ht - Haitian Creole
hu - Hungarian
hu-formal - Hungarian (formal address)
hy - Armenian
hyw - Western Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
igl - Igala
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kai - Karekare
kbd - Kabardian
kbd-cyrl - Kabardian (Cyrillic script)
kbp - Kabiye
kcg - Tyap
kea - Kabuverdianu
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kjh - Khakas
kjp - Eastern Pwo
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - Korean (North Korea)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
krl - Karelian
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ksw - S'gaw Karen
ku - Kurdish
ku-arab - Kurdish (Arabic script)
ku-latn - Kurdish (Latin script)
kum - Kumyk
kus - Kʋsaal
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - Lak
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lki - Laki
lld - Ladin
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mad - Madurese
mag - Magahi
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Māori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mnc - Manchu
mnc-latn - Manchu (Latin script)
mnc-mong - Manchu (Mongolian script)
mni - Manipuri
mnw - Mon
mo - Moldovan
mos - Mossi
mr - Marathi
mrh - Mara
mrj - Western Mari
ms - Malay
ms-arab - Malay (Jawi script)
mt - Maltese
mus - Muscogee
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Min Nan Chinese
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
nia - Nias
niu - Niuean
nl - Dutch
nl-informal - Dutch (informal address)
nmz - Nawdm
nn - Norwegian Nynorsk
no - Norwegian
nod - Northern Thai
nog - Nogai
nov - Novial
nqo - N’Ko
nrm - Norman
nso - Northern Sotho
nv - Navajo
ny - Nyanja
nyn - Nyankole
nys - Nyungar
oc - Occitan
ojb - Northwestern Ojibwa
olo - Livvi-Karelian
om - Oromo
or - Odia
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pcm - Nigerian Pidgin
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
pwn - Paiwan
qqq - Message documentation
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rki - Arakanese
rm - Romansh
rmc - Carpathian Romani
rmy - Vlax Romani
rn - Rundi
ro - Romanian
roa-tara - Tarantino
rsk - Pannonian Rusyn
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
ryu - Okinawan
sa - Sanskrit
sah - Yakut
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
se-fi - Northern Sami (Finland)
se-no - Northern Sami (Norway)
se-se - Northern Sami (Sweden)
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
sh-cyrl - Serbo-Croatian (Cyrillic script)
sh-latn - Serbo-Croatian (Latin script)
shi - Tachelhit
shi-latn - Tachelhit (Latin script)
shi-tfng - Tachelhit (Tifinagh script)
shn - Shan
shy - Shawiya
shy-latn - Shawiya (Latin script)
si - Sinhala
simple - Simple English
sjd - Kildin Sami
sje - Pite Sami
sk - Slovak
skr - Saraiki
skr-arab - Saraiki (Arabic script)
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
smn - Inari Sami
sms - Skolt Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - српски (ћирилица)
sr-el - srpski (latinica)
srn - Sranan Tongo
sro - Campidanese Sardinian
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
sty - Siberian Tatar
su - Sundanese
sv - Swedish
sw - Swahili
syl - Sylheti
szl - Silesian
szy - Sakizaya
ta - Tamil
tay - Tayal
tcy - Tulu
tdd - Tai Nuea
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tly-cyrl - Talysh (Cyrillic script)
tn - Tswana
to - Tongan
tok - Toki Pona
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
trv - Taroko
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - Uzbek (Cyrillic script)
uz-latn - Uzbek (Latin script)
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vmw - Makhuwa
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
wal - Wolaytta
war - Waray
wls - Wallisian
wo - Wolof
wuu - Wu Chinese
wuu-hans - Wu Chinese (Simplified)
wuu-hant - Wu Chinese (Traditional)
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
xsy - Saisiyat
yi - Yiddish
yo - Yoruba
yrl - Nheengatu
yue - Cantonese
yue-hans - Cantonese (Simplified)
yue-hant - Cantonese (Traditional)
za - Zhuang
zea - Zeelandic
zgh - Standard Moroccan Tamazight
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - Chinese (Macau)
zh-my - Chinese (Malaysia)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
Format
Export for off-line translation
Export in native format
Export in CSV format
Fetch
{{DISPLAYTITLE:KDevelop4/Handbuch/Mit Quelltext arbeiten}}<languages /> <span id="Working_with_source_code"></span> == Mit Quelltext arbeiten == Neben dem Debuggen ist das Lesen und Schreiben von Quelltext das, womit man bei der Softwareentwicklung am meisten Zeit verbringt. An dieser Stelle bietet '''Kdevelop''' sehr viele verschiedene Wege um Quelltext anzuschauen und das Quelltextschreiben produktiver zu machen. Wie in den folgenden Abschnitten beschriebenwird, ist '''KDevelop''' nicht nur ein Quelltexteditor. Es ist vielmehr ein Quelltextmanagementsystem, das Ihnen verschiedene Blicke auf die extrahierten Informationen aus den Dateien gibt, die in den Quelltext ihrer Sitzung bilden. <span id="Tools and views"></span> <span id="Tools_and_views"></span> === Werkzeuge und Ansichten === [[Image:kdevelop-7.png|thumb|500px|center]] Um mit Projekte zu arbeiten besitzt '''KDevelop''' das Konzept der ''Werkzeuge''. Ein Werkzeug bietet eine bestimmte ''Ansicht'' auf den Quelltext, oder eine Aktion die damit durchgeführt werden kann. Werkzeuge werden durch einen Button am Rand des Fensters repräsentiert (in vertikalem Text auf dem linken und rechtenRand, oder horizontal am unteren Rand). Wenn Sie darauf klicken, expandieren sie in einem Unterfenster eine ''Ansicht'' im Hauptfenster. Wenn Sie auf den Button erneut klicken, verschwendet das Unterfenster wieder. <div class="mw-translate-fuzzy"> {{Um ein Unterfenster zu verbergen, können Sie auch auf <menuchoice>x</menuchoice> oben rechts im Unterfenster klicken. Dies entfernt in '''KDevelop''' 4.2.x auch den Button, der das Werkzeug repräsentiert. Dies war jedoch der Weg, um das Unterfenster zurück zu bekommen. Weiter unten steht, wie der Button zurück auf den Perimeter gelangt; es handelt sich um den selben Weg, mit dem man irgendeinen Werkzeugbutton hinzufügen kann. Dies ist als Fehler gemeldet wurden unter [http://bugs.kde.org/show_bug.cgi?id=270018 bug 270018]}} </div> <div class="mw-translate-fuzzy"> Das obenstehende Bild zeigt eine Selektion von Werkzeugen, ausgerichtet am rechten und linken Rand. In dem Bild ist das '''Klassen'''-Werkzeug geöffent auf der Linken Seite und das '''Snippets'''-Werkzeug auf der rechten Seite, gemeinsam mit einem Editor für eine Quelltextdatei in der Mitte. In der Praxis werden Sie die meiste Zeit damit verbringen, nur den Editor und vielleicht das '''Klassen'''- oder '''Code-Browser'''-Werkzeug offen zu haben. Andere Werkzeuge werden vermutlich nur temporär offen sein, wenn Sie das Werkzeug benutzen, so dass Sie die meiste Zeit mehr Platz für den Editor haben. </div> Wenn Sie '''KDevelop''' zum ersten mal ausführen, sollten Sie bereits den <menuchoice>Projekte</menuchoice> Werkzeugbutton sehen. Klick Sie darauf: es öffnet sich ein Unterfenster das alle Projekte, die Sie zur Sitzung hinzugefügt haben unten und eine Dateisystemansicht der Verzeichnisse ihrer Projekte oben zeigt. <div class="mw-translate-fuzzy"> Es gibt viele andere Werkzeuge die Sie mit '''KDevelop''' nutzen können. Nicht alle sind anfangs durch Buttons an der Seite repräsentiert. Um Werkzeugbuttons hinzuzufügen, gehen Sie auf den <menuchoice>Fenster -> Werkzeugansicht hinzufügen</menuchoice> Menüeintrag. Es folgen einige Beispiele, die Sie möglicherweise nützlich finden: </div> * '''Klassen''': Eine Komplette Liste aller Klasse die in dem Projekt oder der Sitzung definiert ist, sowie deren Funktionen und Variablen. Das Klicken auf irgendein Objekt öffnet ein Quelltexteditorfenster in dem das Objekt, auf das sie geklickt haben, geöffnet ist. * '''Dokumente''': Liste der zuletzt besuchten Dateien, geordnet nach Typ (beispielsweise Quelltextdatei, Patchdatei, einfache Textdokumente) * '''Quelltext Browser''': Abhängig von der derzeitigen Cursorposition in einer Datei zeigt dieses Werkzeug Dinge, die sich darauf beziehen. Beispielsweise, wenn Sie auf einer <code>#include</code> Zeile sind, dann zeigt es Informationen über die Datei, die Sie einbingen, beispielsweise die Klassen, die in der Datei deklariert werden. Wenn Sie in einer leeren Zeile sind, zeigt es Klassen und Funktionen die in der aktuellen Datei deklariert und definiert sind (alle als Verweise: Klicken auf die Verweise bringt Sie zu dem Punkt, an dem die Deklaration oder die Definition wirklich ist). Wenn Sie in einer Funktionsdefinition sind, dann zeigt der '''Quelltext Browser''', wo die Deklaration ist und eine Liste, wo die Funktion benutzt ist. * '''Dateisystem''': Zeigt eine Baumansicht des Dateisystems. * '''Dokumentation''': Erlaubt Ihnen, Handbücher und andere Hilfedokumente zu durchsuchen. * '''Textbausteine''': Dies bietet Textsequenzen an, die man die man wieder und wieder benutzt und die man nicht jedes mal neu schreiben will. In dem Projekt, von dem das Bild oben erstellt wurde, wird der folgende Code häufig geschrieben:<br /> {{Input|1=<nowiki>for (typename Triangulation< dim>::active_cell_iterator cell = triangulation.begin_active(); cell != triangulation.end(); ++cell)</nowiki>}}<br /> Dies ist eine seltsam aussehender Ausdruck, aber er sieht beinahe so aus wie die Schleife, die man jedes mal benötigen würde. Dies macht es zu einem guten Kandidat für einen Textbaustein. * '''Konsole''': Öffnet ein Kommandozeilenfenster in '''KDevelop'''s Hauptfenster, für Kommandos die Sie eventuell eingeben wollen (beispielsweise <code>./configure</code>). Für die meisten Programmierer ist vertikaler Platz das Wichtigste. Um vertikalen Platz zu gewinnen, können Sie ihre Werkzeugansichten am rechten und linken Rand des Fensters verschieben: um dies zu tun, klicken Sie auf das Symbol des Werkzeugs mit der rechten Maustaste und wählen Sie eine neue Position für das Werkzeug. <span id="Exploring source code"></span> <span id="Exploring_source_code"></span> === Quelltext erforschen === <span id="Local_information"></span> ==== Lokale Informationen ==== ''KDevelop''' ''versteht'' Quelltext, und deswegen ist es wirklich gut beim Bereitstellen von Informationen über Variablen und Funtionen die im Programm vorkommen. Beispielsweise sehen Sie hier ein Beispiel vom Arbeiten mit einem Quelltextteil, und dem platzieren der Maus über dem Symbol <code>cell</code> in Zeile 1316 (wenn Sie tastaturorientiert arbeiten, können Sie denselben Effekt erreichen wenn sie die <keycap>Alt</keycap>-Taste für eine Zeit betätigen): [[Image:kdevelop-13.png|thumb|600px|center]] '''KDevelop''' zeigt Ihnen einen Tooltip der den Typ der Variable beinhaltet (hier: <code>DoFHandler<dim>active_cell_iterator</code>), wo die Variable deklariert ist (der ''container'' der hier die umgebende Funktion <code>get_maximal_velocity</code> ist, weil es eine lokale Variable ist), was es ist (eine Variable, keine Funktion, keine Klasse und keine Namensraum) und wo die Variable deklariert ist (in Zeile 1314, nur ein paar Zeilen über dem Code). In dem aktuellen Kontext hatte das Symbol, auf dem die Maus platziert war, keine assoziierte Dokumentation. Im selben Beispiel würde das Platzieren der Maus auf <code>get_this_mpi_process</code> in Zeile 1318 das folgende Ergebnis liefern: [[Image:kdevelop-14.png|thumb|600px|center]] Hier hat '''KDevelop''' eine cross-referenzierte Deklaration von einer völlig unterschiedlichen Datei (<code>utilities.h</code>, das sogar in einem verschiedenen Projekt in derselben Sitzung ist), zusammen mit dem doxygen-Stil Kommentar das die Deklaration begleitet. Die Dynamik macht den Tooltip noch nützlicher: Sie können auf den Container klicken, um Informationen über den Kontext, in dem die Variable deklariert ist, zu erhalten (beispielsweise über den Namensraum <code>System</code>, was dort deklariert, definiert oder benutzt ist und wie es dokumentiert ist), und Sie können auf die blauen Links klicken, um den Cursor auf die Position der Deklaration des Symbols zu setzen (beispielsweise in <code>utilities.h</code>, Zeile 289). Außerdem können Sie sich eine Liste von Stellen, an denen das Symbol in der aktuellen Datei, im gesamten Projekt oder der derzeitigen Sitzung genutzt wird. Letzteres ist oft nützlich wenn Sie herausfinden wollen wie eine Funktion in einer großen Quelltextmenge verwendet wird. <div class="mw-translate-fuzzy"> {{Note|1=Die Information im Tooltip ist fließend. Sie hängt davon ab, ob Sie die <keycap>Alt</keycap>-Taste drücken oder ob Sie mi der Maus auf einem Objekt sind. Wenn Sie es dauerhaft öffnen wollen, dann platzieren Sie es in der '''Quelltext Browser"' Ansicht in einem der Unterfenster. Beispielsweise ist hier der Cursor auf der selben Funktion wie im obigen Beispiel, und die Werkzeugansicht auf der linken Seite repräsentiert die selben Informationen wie im vorherigen Tooltip.<!--}}--> </div> [[Image:kdevelop-15.png|thumb|500px|center]] <!--{{-->Das Bewegen des Cursors auf der rechten Seite verändert die Informationen, die auf der linken Seite gezeigt werden. Weiterhin können Sie auf den <menuchoice>Aktuelle Ansicht sperren</menuchoice>-Button oben rechts im Unterfenster klicken, um die aktuellen Informationen beizubehalten. Dadurch machen Sie die Informationen unabhängig von der Cursorbewegung, so dass sie während der Cursorbewegung die Informationen im ''Quelltext Browser'' anschauen können.}} {{Note|1=Diese Art von Informationen ist an vielen anderen orten in '''KDevelop''' verfügbar, nicht nur im Quelltexteditor. Beispielsweise liefert das Drücken der <keycap>Alt</keycap>-Taste in der Komplettierungsliste (beispielsweise beim Schnellöffnen) auch Kontextinformationen über das aktuelle Symbol.}} <span id="File_scope_information"></span> ==== Dateibereichsinformationen ==== Die nächste Stufe ist, Informationen über die gesamte Quelltextdatei einzuholen, an der Sie gerade arbeiten. Um dies zu tun, positionieren Sie den Cursor im Dateibereich der aktuellen Datei und schauen Sie, was der '''Quelltext Browser''' anzeigt: [[Image:kdevelop-16.png|thumb|600px|center]] Hier wird eine Liste von Namensräumen, Klassen und Funktionen die in der aktuellen Datei deklariert oder definiert werden angezeigt. So wird Ihnen ein Überblick darüber gegeben, was in dieser Datei passiert, und eine Möglichkeit, direkt zu irgendeiner von diesen Deklarationen und Definitionen zu springen, ohne hoch und runter in der Datei zu scrollen oder nach einem Symbol zu suchen. {{Note|1=The information shown for file scope is the same as presented in the "Outline" mode discussed below for navigating source code; the difference is that outline mode is only a temporary tooltip.}} <span id="Project_and_session_scope_information"></span> ==== Projekt- und Sitzungsberichtsinformationen ==== <div class="mw-translate-fuzzy"> Es gibt viele Wege um an Informationen über ein gesamtes Projekt (oder über alle Projekte einer Sitzung) zu erhalten. Diese Art von Informationen wird typischerweise durch verschiedene Ansichten angeboten. Beispielsweise bietet die '''Klassen'''-Ansicht eine Baumstruktur aller Klassen und umgebenden Namensräume für alle Projekte in einer Sitzung, gemeinsam mit den Funktionen und Variablen von jeder dieser Klassen: </div> [[Image:kdevelop-17.png|thumb|600px|center]] Wenn Sie mit der Maus einen Eintrag anwählen, werden Ihnen Informationen über den Eintrag, den Ort seiner Deklaration und Definition und seine Benutzungen angezeigt. Ein Doppelklick auf den Eintrag in dieser Baumansicht öffnet ein Editorfenster an der Stelle, an der das Symbol deklariert und definiert ist. <div class="mw-translate-fuzzy"> Außerdem gibt es noch andere Arte, auf globale Informationen zu schauen. Beispielsweise liefert das '''Dokumente''' Werkzeug eine Sicht auf alle Dateitypen und andere Dokumente, die das Projekt beinhaltet: </div> [[Image:kdevelop-18.png|thumb|600px|center]] ==== Rainbow color highlighting explained ==== '''KDevelop''' uses a variety of colors to highlight different objects in source code. If you know what the different colors mean, you can very quickly extract a lot of information from source code just by looking at the colors, without reading a single character. The highlighting rules are as follows: * Objects of type Class / Struct, Enum (the values and the type), (global) functions, and class members each have their own color assigned (classes are green, enums are dark red, and members are dark yellow or violet, (global) functions are always violet). * All global variables are colored in dark green. * Identifiers which are typedefs for another type are colored in teal. * All declarations and definitions of objects are in bold. * If a member is accessed from within the context where it is defined (base or derived class) it appears in yellow, otherwise it appears in violet. * If a member is private or protected, it gets colored in a slightly darker color when used. * For variables local to a function body scope, rainbow colors are picked based on a hash of the identifier. This includes the parameters to the function. An identifier always will have the same color within its scope (but the same identifier will get a different color if it represents a different object, i.e. if it is redefined in a more nested scope), and you will usually get the same color for the same identifier name in different scopes. Thus, if you have multiple functions taking parameters with the same names, the arguments will all look the same color-wise. * Identifiers for which '''KDevelop''' could not determine the corresponding declaration are colored in white. This can sometimes be caused by missing <code>#include</code> directives. * In addition to that coloring, the normal editor syntax highlighting will be applied, as known from '''Kate'''. '''KDevelop's''' semantic highlighting will always override the editor highlighting if there is a conflict. {{Note| Rainbow coloring of local variables can be turned off in <menuchoice>Settings...->Configure KDevelop...->Language Support->Local colorization intensity</menuchoice> by setting the slider control to its minimum value. Similarly colorization of global variables, global functions, classes, structs, enums, and class members can be turned off in <menuchoice>Settings...->Configure KDevelop...->Language Support->Global colorization intensity</menuchoice> }} <span id="Navigating in source code"></span> <span id="Navigating_in_source_code"></span> === Navigieren im Quelltext === In dem letzten Abschnitt wurde das anschauen von Quelltext beschrieben, das heißt das Gewinnen von Informationen über Symbole, Dateien und Projekte. Der nächste Schritt ist in dem Quelltexten herumzuspringen, das heißt darin zu navigieren. Es gibt verschiedene Stufen, auf denen dies möglich ist: lokal, in einer Datei und in einem Projekt. {{Note|1=Viele dieser Arten, durch Quelltext zu navigieren, sind verfügbar unter dem <menuchoice>Navigieren</menuchoice>-Menü im '''KDevelop''' Hauptfenster.}} <span id="Local_navigation"></span> ==== Lokale Navigation ==== '''KDevelop''' ist viel mehr als ein Editor, aber es ist ''auch'' ein Quelltexteditor. Deshalb können Sie den Cursor hoch, runter, links und rechts in einer Quelltextdatei bewegen, die <keycap>PageUp</keycap> und die <keycap>PageDown</keycap>-Taste benutzen und andere Kommandos die Sie von einem Editor gewohnt sind. <span id="File_scope_navigation_and_outline_mode"></span> ==== Navigation im Dateibereich und Outlinemodus ==== Im Dateibereich bietet '''KDevelop''' viele verschiedene mögliche Wege um durch Quelltext zu navigieren. Beispielsweise: <div class="mw-translate-fuzzy"> * '''Outline'''': Sie können ein Outline darüber, was in der aktuellen Datei ist, auf drei Wegen erhalten: ** Klicken Sie in die <menuchoice>Outline</menuchoice> Textbox oben rechts im Hauptfenster, oder drücken Sie <keycap>Strg + Alt + N</keycap>. Anschließend öffnet sich ein Dropdownmenü das alle Funktionen und Klassendeklarationen auflistet. [[Image:kdevelop-19.png|thumb|600px|center]] Sie können dann selektieren, zu welchem Sie springen, oder, falls es viele sind, Text, der in den Namen vorkommen könnte, zu tippen beginnen. In diesem Fall wird die Liste beim Schreiben kleiner und kleiner, da Namen entfernt werden, die zu dem bereits getippten nicht passen. ** Positionieren des Cursor im Dateibereich (beispielsweise außerhalb einer Funktions- oder Klassendeklaration oder Definition) und Geöffnethaben des '''Quelltext Browser''' Werkzeugs: [[Image:kdevelop-16.png|thumb|600px|center]] Dies zeigt ihnen auch eine Outline davon, was in der aktuellen Datei passiert, und erlaubt Ihnen, zu selektieren, wo Sie hinspringen wollen. ** Wenn Sie mit der Maus über einen Tab für eine offene Datei fahren, erhalten Sie auch eine Outline dieser Datei in dem Tab. </div> * Quelltextdateien sind in einer Liste als Funktionsdeklarationen und -definitionen organisiert. Das Drücken von <keycap>Strg + Alt + PgUp</keycap> und <keycap>Strg + Alt + PgDown</keycap> springt zur vorhergehenden oder zur nächsten Funktionsdefinition in dieser Datei <span id="Project_and_session_scope_navigation:_Semantic_navigation"></span> ==== Navigation im Projekt- und Sitzungsbereich: Semantische Navigation ==== As mentioned in other places, '''KDevelop''' does not usually consider individual source files but rather looks at projects as a whole (or, rather, at all projects that are part of the current session). As a consequence, it offers many possibilities for navigating through entire projects. Some of these are derived from what we have already discussed in the section on [[Special:myLanguage/KDevelop4/Manual/Working with source code#Exploring source code|Exploring source code]] while others are genuinely different. The common theme is that these navigation features are based on a ''semantic understanding'' of the code, i.e. they offer you something that requires parsing entire projects and connecting data. The following list shows some ways how to navigate through source code that is scattered throughout a potentially very large number of files: * As seen in the section on [[Special:myLanguage/KDevelop4/Manual/Working with source code#Exploring source code|Exploring source code]], you can get a tooltip explaining individual namespace, class, function or variable names by hovering your mouse over it or keeping the <keycap>Alt</keycap> key pressed for a while. Here is an example: [[Image:kdevelop-14.png|thumb|500px|center]] Clicking on the links for the declaration of a symbol or expanding the list of uses allows you to jump to these locations, if necessary opening the respective file and placing the cursor at the corresponding location. A similar effect can be achieved by using the '''Code Browser''' tool view also discussed previously. * '''Quick open''': A very powerful way of jumping to other files or locations is to use the various ''quick open'' methods in '''KDevelop'''. There are four versions of these: ** '''Quick open class''' (<menuchoice>Navigate -> Quick open class</menuchoice> or <keycap>Alt + Ctrl + C</keycap>): You will get a list of all classes in this session. Start typing (a part of) the name of a class and the list will continue to whittle down to only those that actually match what you've typed so far. If the list is short enough, select an element using the up and down keys and '''KDevelop''' will get you to the place where the class is declared. ** '''Quick open function''' (<menuchoice>Navigate -> Quick open function</menuchoice> or <keycap>Alt + Ctrl + M</keycap>): You will get a list of all (member) functions that are part of the projects in the current session, and you can select from it in the same way as above. Note that this list may include both function declarations and definitions. ** '''Quick open file''' (<menuchoice>Navigate -> Quick open file</menuchoice> or <keycap>Alt + Ctrl + O</keycap>): You will get a list of all files that are part of the projects in the current session, and you can select from it in the same way as above. ** '''Universal quick open''' (<menuchoice>Navigate -> Quick open</menuchoice> or <keycap>Alt + Ctrl + Q</keycap>): If you forget which key combination is bound to which of the above commands, this is the universal swiss army knife — it simply presents you with a combined list of all files, functions, classes, and other things from which you can select. * '''Jump to declaration/definition''': When implementing a (member) function, one often needs to switch back to the point where a function is declared, for example to keep the list of function arguments synchronised between declaration and definition, or to update the documentation. To do so, place the cursor onto the function name and select <menuchoice>Navigation -> Jump to declaration</menuchoice> (or hit <keycap>Ctrl + .</keycap>) to get to the place where the function is declared. There are multiple ways to get back to the original place: ** Selecting <menuchoice>Navigation -> Jump to definition</menuchoice> (or hitting <keycap>Ctrl + ,</keycap>). ** Selecting <menuchoice>Navigation -> Previous visited context</menuchoice> (or hit <keycap>Meta + Left</keycap>), as described below. {{Note|1=Jumping to the declaration of a symbol is something that does not only work when placing the cursor on the name of the function you are currently implementing. Rather, it also works for other symbols: Putting the cursor on a (local, global, or member) variable and jumping to its declaration also transports you to its location of declaration. Similarly, you can place the cursor on the name of a class, for example in a variable of function declaration, and jump to the location of its declaration.}} * '''Switch between declaration/definition''': In the example above, to jump to the site of the declaration of the current function, you need to first place the cursor on the function name. To avoid this step, you can select <menuchoice>Navigation -> Switch definition/declaration</menuchoice> (or hit <keycap>Shift + Ctrl + C</keycap>) to jump to the declaration of the function within which the cursor currently is. Selecting the same menu entry a second time transports you back to the place where the function is defined. * '''Previous/Next use''': Placing the cursor on the name of a local variable and selecting <menuchoice>Navigation -> Next use</menuchoice> (or hitting <keycap>Meta + Shift + Right</keycap>) transports you to the next use of this variable in the code. (Note that this doesn't just search for the next occurrence of the variable name but in fact takes into account that variables with the same name but in different scopes are different.) The same works for the use of function names. Selecting <menuchoice>Navigation -> Previous use</menuchoice> (or hitting <keycap>Meta + Shift + Left</keycap>) transports you to the previous use of a symbol. {{Note|1=To see the list of all uses of a name through which these commands cycle, place the cursor onto it and open the <menuchoice>Code Browser</menuchoice> tool view or press and hold the <keycap>Alt</keycap> button. This is explained in more detail in the section on [[Special:myLanguage/KDevelop4/Manual/Working_with_source_code#File_scope_information|Exploring code]].}} {{Note|Some shortcuts might be used already by your window manager (e.g. <keycap>Meta + Left</keycap> is used by LXDE/Openbox); you can either change the key combination for the shortcut in kdevelop <menuchoice>Settings...->Configure Shortcuts</menuchoice> or in the window manager config (e.g. .config/openbox/lubuntu-rc.xml)}} * The '''context list''': Web browsers have this feature where you can go backward and forward in the list of most recently visited web pages. '''KDevelop''' has the same kind of features, except that instead of web pages you visit ''contexts''. A context is the current location of the cursor, and you change it by navigating away from it using anything but cursor commands — for example, by clicking on a location provided by a tooltip, in the <menuchoice>Code Browser</menuchoice> tool view, one of the options given in the <menuchoice>Navigation</menuchoice> menu, or any other navigation command. Using the <menuchoice>Navigation -> Previous Visited Context</menuchoice> (<keycap>Meta + Left</keycap>) and <menuchoice>Navigation -> Next Visited Context</menuchoice> (<keycap>Meta + Right</keycap>) transports you along this list of visited contexts just like the <menuchoice>back</menuchoice> and <menuchoice>forward</menuchoice> buttons of a browser transports you to the previous or next webpage in the list of visited pages. * Finally, there are tool views that allow you to navigate to different places in your code base. For example, the '''Classes''' tool provides you with a list of all namespaces and classes in all projects of the current session, and allows you to expand it to see member functions and variables of each of these classes: [[Image:kdevelop-17.png|thumb|500px|center]] Double-clicking on an item (or going through the context menu using the right mouse button) allows you to jump to the location of the declaration of the item. Other tools allow similar things; for example, the <menuchoice>Projects</menuchoice> tool view provides a list of files that are part of a session: [[Image:kdevelop-13.png|thumb|500px|center]] Again, double-clicking on a file opens it. <span id="Writing source code"></span> <span id="Writing_source_code"></span> === Quelltext schreiben === Weil '''KDevelop''' den Quelltext ihres Projektes versteht, kann es dabei helfen, mehr Quelltext zu schreiben. Das Folgende zeigt, in welcher Weise es das tun kann. <span id="Auto-completion"></span> ==== Autovervollständigung ==== Probably the most useful of all features in writing new code is auto-completion. Consider, for example, the following piece of code: <!--}}-->{{Input|<syntaxhighlight lang="cpp"> class Car { // ... public: std::string get_color () const; }; void foo() { Car my_ride; // ...do something with this variable... std::string color = my_ride.ge </syntaxhighlight>}}<!--{--> In the last line, '''KDevelop''' will remember that the variable <code>my_ride</code> is of type <code>Car</code>, and will automatically offer to complete the name of the member function <code>ge</code> as <code>get_color</code>. In fact, all you have to do is to keep typing until the auto-completion feature has reduced the number of matches to one, and then hit the <keycap>Enter</keycap> key: [[Image:kdevelop-42.png|thumb|500px|center]] Note that you can click on the tool-tip to get more information about the function apart from its return type and whether it is public: [[Image:kdevelop-43.png|thumb|500px|center]] Auto-completion can save you a lot of typing if your project uses long variable and function names; furthermore, it avoids mis-spelling names (and the resulting compiler errors) and it makes it much simpler to remember the exact names of functions; for example, if all of your getters start with <code>get_</code>, then the auto-completion feature will be able to only present you a list of possible getters when you have typed the first four letters, likely reminding you in the process which of the functions is the correct one. Note that for auto-completion to work, neither the declaration of the <code>Car</code> class nor of the <code>my_ride</code> variable need to be in the same file as where you are currently writing code. '''KDevelop''' simply has to know that these classes and variables are connected, i.e. the files in which these connections are made need to be part of the project you are currently working on. {{Note|1='''KDevelop''' doesn't always know when to assist you in completing code. If the auto-completion tooltip doesn't automatically open, hit <keycap>Ctrl + Space</keycap> to open a list of completions manually. In general, in order for auto-completion to work, '''KDevelop''' needs to parse your source files. This happens in the background for all files that are part of the projects of the current session after you start '''KDevelop''', as well as while after you stop typing for a fraction of a second (the delay can be configured).}} {{Note|1='''KDevelop''' only parses files that it considers source code, as determined by the MIME-type of the file. This type isn't set before the first time a file is saved; consequently, creating a new file and starting to write code in it will not trigger parsing for auto-completion until after it is saved for the first time.}} {{Note|1=As in the previous note, for auto-completion to work, '''KDevelop''' must be able to find declarations in header files. For this, it searches in a number of default paths. If it doesn't automatically find a header file, it will underline the name of a header file in red; in that case, right click on it to tell '''KDevelop''' explicitly where to find these files and the information they provide.}} {{Note|1=Configuring auto-completion is discussed in [[KDevelop4/Manual/Customizing_KDevelop#Customizing_code_auto-completion|this section of this manual]].}} ==== Adding new classes and implementing member functions ==== '''KDevelop''' has an assistant for adding new classes. The procedure is described in [[Special:myLanguage/KDevelop4/Manual/Code generation with templates#Creating a new class|Creating a new class]]. A simple C++ class can be created by choosing the Basic C++ template from the <tt>Class</tt> category. In the assistant, we can choose some predefined member functions, for example an empty constructor, a copy constructor and a destructor. After completing the assistant, the new files are created and opened in the editor. The header file already has include guards and the new class has all the member functions we selected. The next two steps would be to document the class and its member functions and to implement them. We will discuss aids for documenting classes and functions below. To implement the special functions already added, simply go to the <menuchoice>bus.cpp</menuchoice> tab where the skeleton of functions are already provided: [[Image:kdevelop-30.png|thumb|500px|center]] To add new member functions, go back to the <menuchoice>bus.h</menuchoice> tab and add the name of a function. For example, let us add this: [[Image:kdevelop-31.png|thumb|500px|center]] Note how I have already started with the implementation. However, in many coding styles, the function shouldn't be implemented in the header file but rather in the corresponding .cpp file. To this end, locate the cursor on the name of the function and select <menuchoice>Code -> Move to source</menuchoice> or hit <keycap>Ctrl + Alt + S</keycap>. This remove the code between curly braces from the header file (and replaces it by a semicolon as necessary to terminate the function declaration) and moves it into the source file: [[Image:kdevelop-32.png|thumb|500px|center]] Note how I have just started typing and that I meant to imply that the <code>students</code> variable should probably be a member variable of class <code>Bus</code> but that I haven't yet added it. Note also how '''KDevelop''' underlines it to make clear that it doesn't know anything about the variable. But this problem can be solved: Clicking on the variable name yields the following tooltip: [[Image:kdevelop-33.png|thumb|500px|center]] (The same can be achieved by right clicking on it and selecting <menuchoice>Solve: Declare As</menuchoice>.) Let me select "3 - private unsigned int" (either by mouse, or by hitting <keycap>Alt + 3</keycap>) and then see how it comes out in the header file: [[Image:kdevelop-34.png|thumb|500px|center]] It is worth noting that '''KDevelop''' extracts the type of the variable to be declared from the expression used to initialize it. For example, if we had written the addition in the following rather dubious way, it would had suggested to declare the variable as type <code>double</code>: [[Image:kdevelop-35.png|thumb|500px|center]] As a final point: The method using <menuchoice>Code -> Move to source</menuchoice> does not always insert the new member function where you may want it. For example, you may want it to be marked as <code>inline</code> and place it at the bottom of the header file. In a case like this, write the declaration and the start writing the definition of the function like this: [[Image:kdevelop-36.png|thumb|500px|center]] '''KDevelop''' automatically offers all possible completions of what might come here. Selecting one of the two <code>add_students</code> entries yields the following code that already fills in the complete argument list: [[Image:kdevelop-37.png|thumb|500px|center]] ==== Documenting declarations ==== Good code is well documented, both at the level of the implementation of algorithms within functions, as well as at the level of the interface — i.e., classes, (member and global) functions, and (member or global) variables need to be documented to explain their intent, possible values of arguments, pre- and postconditions, etc. As far as documenting the interface is concerned, [http://www.doxygen.org doxygen] has become the de facto standard for formatting comments that can then be extracted and displayed on searchable webpages. '''KDevelop''' supports this style of comments by providing a short cut to generate the framework of comments that document a class or member function. For example, assume you have already written this code: {{Input|<syntaxhighlight lang="cpp"> class Car { public: std::string get_color () const; }; </syntaxhighlight>}} You now want to add documentation to both the class and the member function. To this end, move the cursor onto the first line and select <menuchoice>Code -> Document Declaration</menuchoice> or hit <keycap>Alt + Shift + D</keycap>. '''KDevelop''' will respond with the following: [[Image:kdevelop-23.png|thumb|550px|center]] The cursor is already in the grayed out area for you to fill in the short description (after the doxygen keyword <code>@brief</code>) of this class. You can then continue to add documentation to this comment that gives a more detailed overview of what the class does: [[Image:kdevelop-24.png|thumb|550px|center]] While the editor is inside the comment, the comment text is highlighted in green (the highlighting disappears once you move the cursor out of the comment). When you get to the end of a line, hit <keycap>Enter</keycap> and '''KDevelop''' will automatically start a new line that starts with an asterisk and place the cursor one character indented. Now let's document the member function, again by putting the cursor on the line of the declaration and selecting <menuchoice>Code -> Document Declaration</menuchoice> or hitting <keycap>Alt + Shift + D</keycap>: [[Image:kdevelop-25.png|thumb|550px|center]] Again, '''KDevelop''' automatically generates the skeleton of a comment, including documentation for the function itself, as well as its return type. In the current case, the name of the function is pretty much self-explanatory, but oftentimes function arguments may not be and should be documented individually. To illustrate this, let's consider a slightly more interesting function and the comment '''KDevelop''' automatically generates: [[Image:kdevelop-26.png|thumb|550px|center]] Here, the suggested comment already contains all the Doxygen fields for the individual parameters, for example. ==== Renaming variables, functions and classes ==== Sometimes, one wants to rename a function, class or variable. For example, let's say we already have this: [[Image:kdevelop-38.png|thumb|550px|center]] We then realize that we're unhappy with the name <code>remove_students</code> and would have rather called it, say, <code>throw_out_students</code>. We could do a search-replace for the name, but this has two drawbacks: * The function may be used in more than one file. * We really only want to rename this function and not touch functions that may have the same name but are declared in other classes or namespaces. Both these problems can be solved by moving the cursor on any of the occurrences of the name of the function and selecting <menuchoice>Code -> Rename declaration</menuchoice> (or right clicking on the name and selecting <menuchoice>Rename Bus::remove_students</menuchoice>). This brings up a dialog box where you can enter the new name of the function and where you can also see all the places where the function is actually used: [[Image:kdevelop-39.png|thumb|550px|center]] ==== Code snippets ==== Most projects have pieces of code that one frequently has to write in source code. Examples are: for compiler writers, a loop over all instructions; for user interface writers, checks that user input is valid and if not to open an error box; in the project of the author of these lines, it would be code of the kind {{Input|<syntaxhighlight lang="cpp"> for (typename Triangulation<dim,spacedim>::active_cell_iterator cell = triangulation.begin_active(); cell != triangulation.end(); ++cell) ... do something with the cell ... </syntaxhighlight>}} Rather than typing this kind of text over and over again (with all the concomitant typos one introduces), the <menuchoice>Snippets</menuchoice> tool of '''KDevelop''' can help here. To this end, open the tool view (see [[Special:myLanguage/KDevelop4/Manual/Working with source code#Tools and views|Tools and views]] if the corresponding button isn't already on the perimeter of your window). Or, go to <menuchoice>Window -> Tool views</menuchoice> in the top menubar, and turn on <menuchoice>Snippets</menuchoice>. Then click on the <menuchoice>Add repository</menuchoice>button (a slight misnomer — it allows you to create a named collection of snippets for source codes of a particular kind, e.g. C++ sources) and create an empty repository. Then click {{Plus}} to add a snippet, to get a dialog like the following: [[Image:kdevelop-40.png|thumb|500px|center]] {{Note|1=The name of a snippet may not have spaces or other special characters because it must look like a normal function or variable name (for reasons that will become clear in the next paragraph). If the name of the snippet does contain spaces, the <menuchoice>OK</menuchoice> button will become inactive without any further explanation. This has been fixed in recent versions of KDevelop (see [https://bugs.kde.org/show_bug.cgi?id=274299 KDevelop bug 274299]).}} To use a snippet so defined, when you are editing code, you can just type the name of the snippet like you would any other function or variable name. This name will become available for auto-completion — which means that there is no harm in using a long and descriptive name for a snippet such as the one above — and when you accept the suggestion of the auto-completion tooltip (for example by just hitting <keycap>Enter</keycap>), the already entered part of the snippets' name will be replaced by the full expansion of the snippet and will be properly indented: [[Image:kdevelop-41.png|thumb|500px|center]] Note that for this to work, the <menuchoice>Snippets</menuchoice> tool view need not be open or visible: you only ever need the tool view to define new snippets. An alternative, if less convenient, way to expand a snippet is to simply click on it in the respective tool view. {{Note|1=Snippets are much more powerful than just explained. For a full description of what you can do with them, see the [[Special:myLanguage/KDevelop4/Manual/Tool_list/Snippets|detailed documentation of the Snippets tool]].}}<span id="Modes and working sets"></span> === Modes and working sets === [[Image:kdevelop4_noworkingset.png|thumb|300px|center]] If you've gotten this far, take a look at the upper right of the '''KDevelop''' main window: As shown in the picture, you will see that there are three '''modes''' '''KDevelop''' can be in: <menuchoice>Code</menuchoice> (the mode we discuss in the current chapter on working with source code), <menuchoice>Debug</menuchoice> (see [[Special:myLanguage/KDevelop4/Manual/Debugging programs|Debugging programs]]) and <menuchoice>Review</menuchoice> (see [[Special:myLanguage/KDevelop4/Manual/Working with version control systems|Working with version control systems]]). [[Image:kdevelop4_sessionsprojectsworkingsets.png|thumb|250px|center]] Each mode has its own set of tools that are stacked around the perimeter, and each mode also has a ''working set'' of currently open files and documents. Furthermore, each such working set is associated with a current session, i.e. we have the relationship shown above. Note that the files in the working set come from the same session, but they may come from different projects that are part of the same session. If you open '''KDevelop''' the first time, the working set is empty — there are no open files. But as you open files for editing (or debugging, or reviewing in the other modes) your working set grows. The fact that your working set is non-empty is indicated by a symbol in the tab, as shown below. You will notice that whenever you close '''KDevelop''' and later start it again, the working set is saved and restored, i.e. you get the same set of open files. [[Image:kdevelop-10.png|thumb|300px|center]] If you hover your mouse over the symbol for the working set, you get a tooltip that shows you which files are currently open in this working set (here: the <code>step-32.cc</code> and <code>step-1.cc</code> files). Clicking on the red minus sign closes the tab for the corresponding file. Maybe more importantly, clicking on the correspondingly named button allows you to '''close''' the entire working set at once (i.e. to close all currently open files). The point about closing a working set, however, is that it doesn't just close all files, it actually saves the working set and opens a new, still empty one. You can see this here: [[Image:kdevelop-11.png|thumb|300px|center]] Note the two symbols to the left of the three mode tabs (the heart and the unidentifiable symbol to its left). Each of these two symbols represents a saved working set, in addition to the currently open working set. If you hover your mouse over the heart symbol, you'll get something like this: [[Image:kdevelop-12.png|thumb|600px|center]] It shows you that the corresponding working set contains two files and their corresponding project names: <code>Makefile</code> and <code>changes.h</code>. Clicking <menuchoice>Load</menuchoice> will close and save the current working set (which as shown here has the files <code>tria.h</code> and <code>tria.cc</code> open) and instead open the selected working set. You can also permanently delete a working set, which removes it from the set of saved working sets.<span id="Some useful keyboard shortcuts"></span> === Some useful keyboard shortcuts === '''KDevelop's''' editor follows the standard keyboard shortcuts for all usual editing operations. However, it also supports a number of more advanced operations when editing source code, some of which are bound to particular key combinations. The following are frequently particularly helpful: {| border="1" cellspacing="0" !colspan="2" style="background-color:#ffff99;" | Jumping around in code |- | <keycap>Ctrl+Alt+O</keycap> | Quick open file: enter part of a filename and select among all the files in the current session's projects' directory trees that match the string; the file will then be opened |- | <keycap>Ctrl+Alt+C</keycap> | Quick open class: enter part of a class name and select among all class names that match; the cursor will then jump to the class declaration |- | <keycap>Ctrl+Alt+M</keycap> | Quick open function: enter part of a (member) function name and select among all names that match; note that the list shows both declarations and definitions and the cursor will then jump to the selected item |- | <keycap>Ctrl+Alt+Q</keycap> | Universal quick open: type anything (file name, class name, function name) and get a list of anything that matches to select from |- | <keycap>Ctrl+Alt+N</keycap> | Outline: Provide a list of all things that are happening in this file, e.g. class declarations and function definitions |- | <keycap>Ctrl+,</keycap> | Jump to definition of a function if the cursor is currently on a function declaration |- | <keycap>Ctrl+.</keycap> | Jump to declaration of a function or variable if the cursor is currently in a function definition |- | <keycap>Ctrl+Alt+PageDown</keycap> | Jump to next function |- | <keycap>Ctrl+Alt+PageUp</keycap> | Jump to previous function |- | <keycap>Ctrl+G</keycap> | Goto line |- !colspan="2" style="background-color:#ffff99;" | Searching and replacing |- | <keycap>Ctrl+F</keycap> | Find |- | <keycap>F3</keycap> | Find next |- | <keycap>Ctrl+R</keycap> | Replace |- | <keycap>Ctrl+Alt+F</keycap> | Find-Replace in multiple files |- !colspan="2" style="background-color:#ffff99;" | Other things |- | <keycap>Ctrl+_</keycap> | Collapse one level: remove this block from view, for example if you want to focus on the bigger picture within a function |- | <keycap>Ctrl++</keycap> | Expand one level: undo the collapsing |- | <keycap>Ctrl+D</keycap> | Comment out selected text or current line |- | <keycap>Ctrl+Shift+D</keycap> | Comment in selected text or current line |- | <keycap>Alt+Shift+D</keycap> | Document the current function. If the cursor is on a function or class declaration then hitting this key will create a doxygen-style comment pre-populated with a listing of all parameters, return values, etc. |- | <keycap>Ctrl+T</keycap> | Transpose the current and the previous character |- | <keycap>Ctrl+K</keycap> | Delete the current line (note: this is not just emacs' "delete from here to the end of the line") <!--{-->|} {{Prevnext2 | prevpage=Special:MyLanguage/KDevelop4/Manual/Sessions_and_projects | nextpage=Special:MyLanguage/KDevelop4/Manual/Code_generation_with_templates | prevtext=Sessions and projects | nexttext=Code generation with templates | index=Special:MyLanguage/KDevelop4/Manual | indextext=Back to menu }} [[Category:Entwicklung/de]]
Toggle limited content width