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/Manual/Arbejdet med kildekode}}<languages /> <span id="Working_with_source_code"></span> == Arbejdet med kildekode == Ved siden af fejlsøgning er skrivning og læsning af kildekode det, som du vil bruge mest tid med, når du udvikler software. Til dette formål giver '''KDevelop''' dig mange forskelige måder at udforske kildekoden og effektivisere skrivning af den. Som det vises i detaljer i de følgende afsnit, så er '''KDevelop''' ikke blot en kodeeditor — den er et system til at håndtere kildekode, som giver dig forskellige visninger af information, som findes i de filer, som tilsammen udgør kildekoden i din session. <span id="Tools and views"></span> <span id="Tools_and_views"></span> === Værktøjer og visninger === [[Image:kdevelop-7.png|thumb|500px|center]] Til arbejdet med projekter har '''KDevelop''' begrebet ''værktøjer''. Et værktøj giver dig en særlig visning af kildekoden eller en handling, som det kan udføre. Værktøjer repræsenteres af knapper, som findes rundt omkring i vinduets kant (med lodret tekst langs venstre og højre kant eller vandret langs bunden). Hvis du klikker på dem, så udvides de til et undervindue — en ''visning'' — indenfor hovedvinduet. Hvis du klikker på værktøjsknappen en gang til, så forsvinder visningen igen. {{Note/da|1=For at få et undervindue til af forsvinde kan du også klikke på knappen <menuchoice>x</menuchoice> øverst til højre i undervinduet}} Billedet ovenfor viser et eksempel på værktøjer placeret i den venstre og højre kant. I billeder er værktøjet <menuchoice>Klasser</menuchoice> åbent til venstre og værktøjet <menuchoice>Tekststumper</menuchoice> til højre sammen med en editor til en kildefil i midten. For det meste vil du nok kun have editoren åben og måske værktøjet <menuchoice>Klasser</menuchoice> eller <menuchoice>Kodebrowser</menuchoice> til venstre. Andre værktøjer vil sikkert kun være åbne midlertidigt mens du bruger dem, sådan at der bliver mere plads til editoren. Når du kører '''KDevelop''' første gang, så skulle du allerede have værktøjsknappen <menuchoice>Projekter</menuchoice>. Klik på den: det vil åbne et undervindue, som forneden viser de projekter, som du har føjet til sessionen og en visning af mapperne i dit projekt for oven. Der er mange [[Special:myLanguage/KDevelop4/Manual/Tool_list|andre værktøjer]], som du kan bruge i '''KDevelop''', men deres knapper er ikke alle til stede i vindueskanten fra begyndelsen. For at føje flere til vælger du menuen <menuchoice>Vindue -> Tilføj værktøjsvisning...</menuchoice>. Her er nogle, som du sikkert vil få glæde af: * '''Klasser''': En fuldstændig liste af alle klasser, som bliver defineret i en af din sessions projekter med alle deres medlemsfunktioner og -variable. Klik på et medlem for at åbne kildeeditorens vindue med markøren på det sted, hvor det emne, du klikkede på er defineret. * '''Dokumenter''': Viser de filer, som du for nylig har arbejdet med ordnet efter type (fx kildefil, patchfil eller rent tekstdokument). * '''Kodebrowser''': Dette værktøj viser ting, der er relaterede til det, som du aktuelt arbejder med afhængigt af, hvor markøren er placeret. Hvis den fx er på en <code>#include</code> linje, så vises information om den fil der bliver inkluderet, så som hvilke klasser, der erklæres i filen; hvis du er på en tom linje på filniveau, så vises de klasser og funktioner, som erklæres eller defineres i den aktuelle fil (alle vises som links: klikker du på dem, så bringes du til det sted i filen, hvor erklæringen eller definitionen er); hvis du er i en funktionsdefinition, så vises der, hvor funktionen erklæres og hvor den bruges. * '''Filsystem''': Giver dig en trævisning af filsystemet. * '''Dokumentation''': Lader dig søge efter man-sider og andre hjælpedokumenter. * '''Tekststumper''': Her kan du gemme tekststumper, som du ofte har brug for og ikke har lyst til at skulle skrive hver gang. I projektet, som vises i billedet ovenfor er der ofte brug for kode som <br /> {{Input|1=<nowiki>for (typename Triangulation<dim>::active_cell_iterator cell = triangulation.begin_active(); cell != triangulation.end(); ++cell)</nowiki>}}<br />Det er besværligt udtryk, med det ser næsten ud på samme måde, hver gang du har brug for sådan en løkke. Det gør udtrykket til en god kandidat til en tekststump. * '''Konsole''': Åbner et vindue med en kommandolinje i '''KDevelops''' hovedvindue til de situationer, hvor du blot skal have udført enkelte kommandoer (fx hvis du skal køre <code>./configure</code>). For mange programmører er det vigtigst at have god plads i lodret retning. For at opnå dette kan du arrangere dine værktøjsvisninger i venstre og højre vindueskant. For at flytte et værktøj højreklikker du på dets knap og vælger en ny position til det. <span id="Exploring source code"></span> <span id="Exploring_source_code"></span> === Udforsk kildekoden === <span id="Local_information"></span> ==== Lokal information ==== '''KDevelop''' ''forstår'' kildekode og er derfor virkelig god til at at give dig information om variable eller funktioner, som kan optræde i dit program. Her er for eksempel et øjebliksbillede af arbejdet med et stump kode, hvor musen svæver over symbolet <code>cell</code> i linje 1316 (hvis du foretrækker at bruge tastaturet, så kan du opnå det samme ved at holde <keycap>Alt</keycap>-tasten nede et stykke tid): [[Image:kdevelop-13.png|thumb|600px|center]] '''KDevelop''' viser dig et værktøjstip, som inkluderer variablens type (her <code>DoFHandler<dim>active_cell_iterator</code>), hvor denne variabel er erklæret (hvad den er ''indeholdt i'' — her den omgivende funktion <code>get_maximal_velocity</code>, eftersom det er en lokal variabel, ikke en funktion, klasse eller navnerum) og hvor den er erklæret (i linje 1314, blot nogle få linjer oppe i koden). I den aktuelle sammenhæng har symbolet, som musen svæver over ingen tilknyttet dokumentation. Hvis musen havde svævet over symbolet <code>get_this_mpi_process</code> i linje 1318 i dette eksempel, så ville det have set sådan ud: [[Image:kdevelop-14.png|thumb|600px|center]] Her har '''KDevelop''' henvist til erklæringen i en anden fil (<code>utilities.h</code>, som endda hører til et andet projekt i den samme session) og vist den doxygen-agtige kommentar, som er knyttet til erklæringen der. Hvad der gør disse værktøjstips endnu nyttigere er, at de er dynamiske: Du kan klikke på linket <menuchoice>Container</menuchoice> for at få information om den kontekst, som variablen er erklæret i (fx om navnerummet <code>System</code>, så som hvor det bliver erklæret, defineret, brugt eller hvad dets dokumentation er) og du kan klikke på det blå link for at få flyttet tekstmarkøren hen til symbolets erklæring (i eksemplet til linje 289 i <code>utilities</code>) eller få en liste over steder, hvor dette symbol bruges i den aktuelle fil eller overalt i projekterne, som hører den aktuelle session. Det sidste er ofte nyttigt, hvis du for eksempel vil undersøge, hvordan en given funktion bruges i en større kodebase. {{Note/da|1=Informationen i værktøjstippet er flygtig — den er afhængig af, at du holder <keycap>Alt</keycap>-tasten nede eller holder musen svævende. Hvis du ønsker et mere permanent visning, så åbn værktøjsvisningen <menuchoice>Kodebrowser</menuchoice> i et af undervinduerne. For eksempel er markøren her på samme funktion som i eksemplet ovenfor og værktøjsvisningen til venstre giver den samme slags information som værktøjstippet før:<!--}}--> [[Image:kdevelop-15.png|thumb|500px|center]] <!--{{-->Flytter du mærkøren rundt i vinduet til højre, så ændres informationen tilsvarende i visningen til venstre. Desuden kan du klikke på knappen <menuchoice>Lås nuværende visning</menuchoice> øverst til højre i '''Kodebrowseren''' for at fastholde informationen og dermed gøre den uafhængig af markørens bevægelse mens du udforsker den givne information.}} {{Note/da|1=Denne slags kontekstafhængig information er tilgængelig mange steder i '''KDevelop''', ikke kun i kodeeditoren. Holder du for eksempel <keycap>Alt</keycap>-tasten nede, mens markøren er i en liste med forslag til færdiggørelse (fx når du foretager en hurtig åbning), så får du også information om det aktuelle symbol.}} <span id="File_scope_information"></span> ==== Information på filniveau ==== Går vi et niveau op, så kan du få information om hele den aktuelle kildefil ved at placere markøren i en linje på filniveau og se hvad værktøjsvisningen '''Kodebrowser''' viser: [[Image:kdevelop-16.png|thumb|600px|center]] Her vises en liste med navnerum, klasser og funktioner, som bliver erklæret eller defineret i den akuelle fil. Det giver dig et overblik over, hvad der sker i denne fil og en måde til hoppe direkte til enhver af disse erklæringer eller definitioner uden at skulle rulle op eller ned i filen eller søge efter et bestemt symbol. {{Note/da|1=Informationen til at navigere i kildekoden, som vises på filniveau er den samme, som du får i tilstanden '''Omrids''', som omtales nedenfor; forskellen er, at tilstanden '''Omrids''' kun er et midlertidigt værktøjstip.}} <span id="Project_and_session_scope_information"></span> ==== Information om projekter og sessioner ==== Der er mange måder at få information om et helt projekt (eller endda om alle projekter i en session). Den slags information gives som regel i en værktøjsvisning. For eksempel giver værktøjsvisningen <menuchoice>Klasser</menuchoice> dig en træstruktur over alle klasser og omgivende navnerum for alle projekter i en session sammen med hver enkelt klasses medlemsfunktioner og -variable: [[Image:kdevelop-17.png|thumb|600px|center]] Lader du musen svæve over et emne, så får du igen information om symbolet, hvor det bliver erklæret, defineret og brugt. Dobbeltklikker du på et emne i trævisningen, så åbnes et editorvindue med markøren placeret der, hvor symbolet bliver erklæret eller defineret. Med der er andre måder at få vist global information. For eksempel giver værktøjsvisningen <menuchoice>Dokumenter</menuchoice> en oversigt over et projekt i form af de forskellige slags filer eller andre dokumenter, som indgår i projektet: [[Image:kdevelop-18.png|thumb|600px|center]] <span id="Rainbow_color_highlighting_explained"></span> ==== Fremhævning med alle regnbuens farver ==== '''KDevelop''' bruger en række farver til at fremhæve forskellige objekter i kildekoden. Hvis du ved, hvad de forskellige farver betyder, så kan du lynhurtigt få en masse information fra kildekoden blot ved at se på farverne uden at læse en eneste tegn. Reglerne for fremhævning er som følger: * Objekter af type Class, Struct og Enum (værdierne og typen), (globale) funktioner og klassemedlemmer har fået tildelt hver deres farve (klasser er grønne, enums er mørkerøde og medlemmer er mørkegule eller violette, (global) funktioner er altid violette). * Alle globale variable er mørkegrønne. * Identifikatorer, som er typedefs for andre typer er grønblå. * Alle erklæringer og definitioner af objekter er i fede typer. * Hvis et medlem tilgås inde fra den kontekst, hvor det er defineret (base- eller afledet klasse) så vises det i gult, ellers er det violet. * Hvis et medlem er private eller protected får det en lidt mørkere farve, når det bruges. * For variable, som er lokale i en funktionskrops virkefelt vælges farver baseret på en hashværdi af identifikatoren. Dette gælder også funktionens parametre. En identifikator vil altid have den samme farve indenfor sit virkefelt (men den samme identifikator vil få en anden farve, hvis den repræsenterer et andet objekt, dvs. hvis den bliver omdefineret i et indlejret virkefelt), og du får som regel den samme farve for den samme identifikator i forskellige virkefelter. Hvis du således har flere funktioner, som tager parametre med de samme navne, så vil argumenterne altid få de samme farver. * Identifikatorer, for hvilke '''KDevelop''' ikke kunne finde den tilsvarende erklæring farves hvide. Dette kan undertiden forårsages af manglende <code>#include</code>-erklæringer. * Ud over denne farvning vil normal editor-syntaksfremhævning blive udført som det kendes fra '''Kate'''. '''KDevelops''' semantiske fremhævning vil altid have forrang for editorens fremhævning, hvis der er en konflikt. {{Note/da|Farvning af lokale variable kan slås fra i <menuchoice>Indstillinger... -> Indstil KDevelop... -> Sprogunderstøttelse -> Lokal farvelægningsintensitet</menuchoice> ved at skubbe skyderen til sin mindste værdi. Tilsvarende kan farvning af globale variable, globale funktioner, klasser, structs, enumerationer og medlemmer af klasser kan slås fra i <menuchoice>Indstillinger... -> Indstil KDevelop... -> Sprogunderstøttelse -> Global farvelægningsintensitet</menuchoice>}} <span id="Navigating in source code"></span> <span id="Navigating_in_source_code"></span> === Bevæg dig rundt i kildekoden === I det forrige afsnit har vi fortalt, hvordan man udforsker kildekoden, dvs. får information om symboler, filer og projekter. Næste skridt er at bevæge sig rundt i kildekoden. Der er igen forskellige niveauer, som det kan foregå på: lokalt, på filniveau og indenfor et helt projekt. {{Note/da|1=Mange af de måder, som man kan navigere i koden på er tilgængelige i menuen <menuchoice>Navigér</menuchoice> i KDevelops hovedvindue.}} <span id="Local_navigation"></span> ==== Lokal navigation ==== '''KDevelop''' er meget mere end en editor, men den er ''også'' er kildeeditor. Som sådan kan du selvfølge flytte markøren op, ned og til højre og venstre i kildefilen. Du kan også bruge tasterne <keycap>PageUp</keycap> og <keycap>PageDown</keycap> og alle de andre kommandoer, som du kender det fra enhver brugbar editor. <span id="File_scope_navigation_and_outline_mode"></span> ==== Navigation på filniveau og i omrids-tilstand ==== På filniveau har '''KDevelop''' mange måder at navigere igennem kildekoden på, herunder følgende metoder til at hoppe rundt i en given fil: * '''Omrids''': Du kan få et overblik over, hvad der er i den aktuelle fil på mindst tre forskellige måder: ** Ved at klikke i tekstboksen <menuchoice>Omrids</menuchoice> øverst til højre i hovedvinduet eller taste <keycap>Alt + Ctrl + N</keycap> åbner du en dropned-liste med alle funktions- og klasseerklæringer:<br />[[image:kdevelop-19.png|thumb|600px|center]]<br />Du kan så vælge at hoppe til en af dem eller — hvis der er mange — begynde at skrive, hvorved listen bliver mindre og mindre efterhånden som de emner, som ikke passer med det du har skrevet forsvinder fra listen. ** Placér markøren på i linje på filniveau (dvs. udenfor erklæringer og definitioner af funktioner og klasser) mens værktøjsvisningen <menuchoice>Kodebrowser</menuchoice> er åben:<br />[[image:kdevelop-16.png|thumb|600px|center]]<br />Dette giver dig også et oberblik over den aktuelle fil og lader dig vælge, hvor du vil hoppe til. ** Lader du musen svæve over fanebladet for en af de åbne filer, så får du også et omrids af filen i dette faneblad. * Kildefiler er organiserede som en liste af erklæringer og definitioner af funktioner. Taster du <keycap>Alt + Ctrl + PgUp</keycap> eller <keycap>Alt + Ctrl + PgDown</keycap>, så hopper du til den forrige eller næste funktionsdefinition i denne fil. <span id="Project_and_session_scope_navigation:_Semantic_navigation"></span> ==== Navigation i projekter og sessioner: Semantisk navigation ==== Som nævnt andetsteds arbejder '''KDevelop''' normalt ikke men enkelte kildefiler men ser på projekter som et hele (eller snarere med alle de projekter, som er en del af den aktuelle session). Som konsekvens af det giver den dig mange muligheder for at navigere igennem hele projekter. Nogle af disse muligheder er afledt af de funktioner, som vi allerede har omtalt i afsnittet [[Special:myLanguage/KDevelop4/Manual/Working with source code#Exploring source code|Udforsk kildekoden]], mens andre er helt nye. Det fælles tema er, at disse navigationsfunktioner er baseret på en ''semantisk forståelse'' af kildekoden, dvs. at hele projekteer med tilhørende data skal parses, for at de skal kunne fungere. Den følgende liste viser nogle af måderne, på hvilke du kan navigere igennem kildekode, som kan være spredt ud over et potentielt meget stort antal filer: * Som vi så i afsnittet [[Special:myLAnguage/KDevelop4/Manual/Working with source code#Exploring source code|Udforsk kildekoden]] kan du få et værktøjstip, som forklarer individuelle navnerum, klasser, funktioner og variable ved at lade musen svæve over deres navn eller holde <keycap>Alt</keycap>-tasten nede et stykke tid. Her er et eksempel:<br />[[Image:kdevelop-14.png|thumb|500px|center]]<br />Klikker du på linkene for et symbols erklæring eller udvider du listen med anvendelser, så kan du hoppe til disse steder — den relevante fil åbnes, hvis det er nødvendigt — og placere markøren på det tilsvarende sted. En lignende effekt kan opnås ved at bruge værktøjsvisningen '''Kodebrowser''', som også er omtalt tidligere. * '''Åbn hurtigt''': De forskellige ''åbn hurtigt''-metoder i '''KDevelop''' giver dig kraftfulde måder at hoppe til andre filer eller steder. Der er fire af dem: ** '''Åbn klasse hurtigt''' (<menuchoice>Navigation -> Åbn klasse hurtigt</menuchoice> eller <keycap>Alt + Ctrl + C</keycap>): Du vil få en liste med alle klasserne i denne session. Når du begynd at skrive (en del af) klassens navn, så skrumper listen ind til kun at indeholde de klasser, hvis navne matcher det, som du har skrevet indtil nu. Når listen er kort nok, så kan du vælge et element ved brug af pil op- og ned-tasterne og '''KDevelop''' vil tage dig til det sted, hvor klassen bliver erklæret. ** '''Åbn funktion hurtigt''' (<menuchoice>Navigation -> Åbn funktion hurtigt</menuchoice> eller <keycap>Alt + Ctrl + M</keycap>): Du vil få en liste med alle (medlems)funktionerne, som indgår i projekterne i den aktuelle session, og du kan vælge fra listen på samme måde som ovenfor. Bemærk, at listen kan inkludere både funktionserklæringer og -definitioner. ** '''Åbn fil hurtigt''' (<menuchoice>Navigation -> Åbn fil hurtigt</menuchoice> eller <keycap>Alt + Ctrl + O</keycap>): Du vil få en liste med alle filerne, som indgår i projekterne i den aktuelle session, og du kan vælge fra listen på samme måde som ovenfor. ** '''Universel åbn hurtigt''' (<menuchoice>Navigation -> Åbn hurtigt</menuchoice> eller <keycap>Alt + Ctrl + Q</keycap>): Hvis du glemmer, hvilken tastaturgenvej, der er bundet til hvilken af de foregående metoder, så er dette den universelle schweizerkniv — den giver dig en liste med alle filer, funktioner, klasser og andre ting, som du kan vælge fra. * '''Spring til erklæring eller definition''': Når man implementerer en (medlems)funktion, så har man ofte brug for at hoppe tilbage til det sted, hvor funktionen bliver erklæret for eksempel for at holde argumentlisten i funktionserklæringen synkroniseret med funktionsdefinition eller for at opdatere dokumentationen. For at gøre dette placerer du markøren på funktionens navn og vælger menuen <menuchoice>Navigation -> Spring til erklæring</menuchoice> (eller tast <keycap>Ctrl + .</keycap>) for at komme til det sted, hvor funktionen bliver erklæret. Der er flere måder at komme tilbage til det oprindelige sted: ** Vælg menuen <menuchoice>Navigation -> Spring til definitionen</menuchoice> (eller tast <keycap>Ctrl + ,</keycap>). ** Vælg menuen <menuchoice>Navigation -> Forrige besøgte kontekst</menuchoice> (eller tast <keycap>Meta + pil til venstre</keycap>) som beskrevet længere nede. {{Note/da|1=At springe til erklæringen af et symbol virker ikke blot med navne på funktioner, som du er i færd med at implementere. Det fungerer også med andre symboler: Placér markøren på en (lokal, global eller medlems-) variabel og hop til dens erklæring. På samme måde kan du placere markøren på en klasses navn for eksempel i en variabel eller funktionserklæring og hoppe til stedet, hvor den bliver erklæret.}} * '''Skift definering/erklæring''': I ovenstående eksempel skulle du først placere markøren på funktionens navn for at hoppe til erklæringen. For at undgå dette kan du vælge menuen <menuchoice>Navigation -> Skift definering/erklæring</menuchoice> (eller taste <keycap>Shift + Ctrl +C</keycap>) for at hoppe til erklæringen af den funktion, som markøren aktuelt befinder sig i. Vælg det samme menupunkt en gang til for at komme tilbage til det sted, hvor funktionen bliver defineret. * '''Forrige eller næste brugstilfælde''': Placér markøren på en lokal variabels navn og vælg menuen <menuchoice>Navigation -> Næste brugstilfælde</menuchoice> (eller tast <keycap>Meta + Shift + pil til højre</keycap>) for at hoppe til det næste sted, hvor variablen bruges. (Bemærk, at dette ikke blot søger efter fremkomster af variabelnavnet, men faktisk tager højde for, at variable med det samme navn men udenfor den aktuelle rækkevidde ikke er anvendelser af den samme variabel.) Det samme kan du gøre med funktionsnavne. Vælg menuen <menuchoice>Navigation -> Forrige brugstilfælde</menuchoice> (eller tast <keycap>Meta + Shift + pil til venstre</keycap>) for at komme til en tidligere anvendelse af symbolet. {{Note/da|1=For at se en liste med alle anvendelser af et navn, som disse kommandoer bevæger sig rundt imellem kan du placere markøren på navnet, åbne værktøjsvisningen <menuchoice>Kodebrowser</menuchoice> og holde <keycap>Alt</keycap>-tasten nede. Dette forklares i mere detalje i afsnittet om at [[Special:myLanguage/KDevelop4/Manual/Working_with_source_code#File_scope_information|udforske kildekoden]].}} {{Note/da|Nogle genveje kan allerede være anvendt af dinvinduesmanager (fx bruges <keycap>Meta + Left</keycap> af LXDE/Openbox); du kan enten ændre tastekombinationerne for genvejen i KDevelop i <menuchoice>Indstillinger... -> Indstil genveje</menuchoice> eller i vinduesmanagerens indstillinger (fx .config/openbox/lubuntu-rc.xml)}} * '''Kontekstlisten''': Webbrowsere har en funktion, hvor du kan gå frem og tilbage i listen over de senest besøgte sider. '''KDevelop''' har den samme slags funktion, hvor du i stedet for websider besøger ''kontekster''. En kontekst er markørens aktuelle position, og du ændrer konteksten ved enhver form for navigering bortset fra markørkommandoerne — for eksempel ved at klikke på et link i et værktøjstip eller i værktøjsvisningen <menuchoice>Kodebrowser</menuchoice>, vælge et punkt i menuen <menuchoice>Navigation</menuchoice> eller bruge en af de andre navigationskommandoer. Brug menuerne <menuchoice>Navigation -> Forrige besøgte kontekst</menuchoice> (<keycap>Meta + pil til venstre</keycap>) og <menuchoice>Navigation -> Næste besøgte kontekst</menuchoice> (<keycap>Meta + pil til højre</keycap>) til at gå igennem listen af besøgte kontekster ligesom <menuchoice>Frem</menuchoice>- og <menuchoice>Tilbage</menuchoice>-knapperne i en browser fører dig frem og tilbage i listen af besøgte websider. * Endelig er der værktøjsvisninger, som lader dig navigere til forskellige steder i din kodebase. For eksempel giver værktøjsvisningen '''Klasser''' en liste med alle navnerum og klasser i alle projekter i den aktuelle session og lader dig folde listen ud, sådan at du kan se hver klasses medlemsfunktioner og -variable: [[Image:kdevelop-17.png|thumb|500px|center]] Du kan hoppe til edt sted, hvor et punkt erklæres ved at dobbeltklikke på de (eller bruge kontekstmenuen ved at højreklikke). Andre værktøjer har lignende funktioner; for eksempel giver værktøjsvisningen <menuchoice>Projekter</menuchoice> en liste med filer, som indgår i sessionen: [[Image:kdevelop-13.png|thumb|500px|center]] Igen åbner du en fil ved at dobbeltklikke på den. <span id="Writing source code"></span> <span id="Writing_source_code"></span> === Skriv kildekode === Eftersom '''KDevelop''' forstår dit projekts kildekode, så kan den hjælpe dig med at skrive yderligere kode. I det følgende skitseres nogle af de måder, som det sker på. <span id="Auto-completion"></span> ==== Automatisk fuldførelse ==== Automatisk fuldførelse er nok den nyttigste af alle funktionerne til at skrive ny kode er. Betragt for eksempel følge stump kode: <!--}}-->{{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>}}<!--{--> I den sidste linje vil '''KDevelop''' huske, at variablen <code>my_ride</code> er af typen <code>Car</code> og vil automatisk tilbyde at færdiggøre navnet på medlemsfunktionen <code>ge</code> til <code>get_color</code>. Alt havd du behøver at gøre er faktisk at skrive, indtil funktionentil automatisk fuldførelse har reduceret antallet af matchende funktioner til en og så taste <keycap>Enter</keycap>: [[Image:kdevelop-42.png|thumb|500px|center]] Bemærk, at du kan klikke på værktøjstippet for at få mere information om funktionen ud over dens returtype og om den er "public": [[Image:kdevelop-43.png|thumb|500px|center]] Automatisk fuldførelse kan spare dig en masse tasteanslag, hvis dit projekt bruger lange variabel- og funktionsnavne; desuden hjælper det med at undgå skrivefejl i navne (med dertil hørende compilerfejl), og det gør det meget lettere at huske funktionernes præcise navne. Hvis for eksempel alle dine getter-funktioners navne starter med <code>get_</code>, så bliver funktionen til automatisk fuldførelse i stand til at præsentere dig for en liste, som kun indeholder mulige gettere, efter at du blot har tastet de første fire bogstaver i navnet; i den forbindelse vil du nok blive mindet om, hvilken af funktionerne, der er den rigtige. Bemærk, at automatisk fuldførelse virker selv hvis den aktuelle fil hverken indeholder erklæringerne af klassen <code>Car</code> eller variablen <code>my_ride</code>. '''KDevelop''' skal blot vide, at disse klasser og variable er tilknyttede, dvs. at filerne, hvor de bliver erklærede skal være en del af projektet, som du aktuelt arbejder på. {{Note/da|1='''KDevelop''' ved ikke altid, hvornår den skal hjælpe dig med at fuldføre kode. Hvis tooltippet med automatiske fuldførelse ikke åbnes automatisk, så tast <keycap>Ctrl + Mellemrum</keycap> for manuelt at åbne en liste med mulige fuldførelser. For at kunne udfør automatisk fuldførelse skal '''KDevelop''' fortolke din kildefil. Dette sker i baggrunden for alle filer, som hører til projekterne i den aktuelle session efter at du starter '''KDevelop''' samt når du stopper med at skrive i en brøkdel af et sekund (forsinkelsen kan indstilles).}} {{Note/da|1='''KDevelop''' fortolker kun filer, som den betragter som kildekode, hvilket bestemmes af filens MIME-type. Denne type er ikke fastast før efter at filen er belvet gemt en gang; når du laver en ny fil og begynder at skrive kode i den, så udløser det ikke fortolkning med henblik på automatisk fuldførelse før efter, at filen er blevet gemt første gang.}} {{Note/da|1=For at automatisk fuldførelse kan fungere, så skal '''KDevelop''' kunne finde erklæringer i headerfiler. Den vil søge i et antal standardmapper. Hvis den ikke automatisk finder en headerfil, så vil den understrege headerfilens navn med rødt; i så fald kan du højreklik på headerfilen for at fortælle'''KDevelop''', hvor denne fil findes og hvilken information den indeholder.}} {{Note/da|1=Indstilling af den automatiske fuldførelse bliver forklaret i [[KDevelop4/Manual/Customizing_KDevelop#Customizing_code_auto-completion|dette afsnit af manualen]].}} <span id="Adding_new_classes_and_implementing_member_functions"></span> ==== Tilføj nye klasser og implementér medlemsfunktioner ==== '''KDevelop''' her en guide til at tilføje nye klasser. Proceduren er beskrevet i [[Special:myLanguage/KDevelop4/Manual/Code generation with templates#Creating a new class|Opret en ny klasse]]. En simpel C++-klasse kan oprettes ved at vælge skabelonen Basic C++ i kategorien <tt>Klasse</tt>. I guiden kan vu vælge nogle forud definerede funktioner, for eksemepel en tom konstruktør, en kopikonstruktør og en destruktør. Efter at have afsluttet guiden oprettes filen og den åbnes i editoren. Headerfilen har allerede et "include-værn", og den nye klasse har alle de medlemsfunktioner, som vi valgte. De næste to skridt ville være at dokumentere klassen og dens medlemmer og at implementere dem. Vi vil diskutere funktionerne til at hjælpe med dokumentation nedenfor. For at implementere de funktioner, som allerede er tilføjet går du simpelt hen til fanebladet <menuchoice>bus.cpp</menuchoice>, hvor de allerede findes: [[Image:kdevelop-30.png|thumb|500px|center]] For at tilføje nye medlemsfunktioner går du tilbage til fanebladet <menuchoice>bus.h</menuchoice> og tilføjer funktionens navn. Lad os for eksempel tilføje dette: [[Image:kdevelop-31.png|thumb|500px|center]] Bemærk, at jeg allered er begyndt at implementere. I mange kodningsstile skal funktioner dog ikke implementeres i headeren men snarere i den tilhørende .cpp-fil. For at gøre dette placerer du markøren på funktionens navn og vælger <menuchoice>Kode -> Flyt ind i kilden</menuchoice> eller tast <keycap>Ctrl + Alt + S</keycap>. Dette fjerner koden mellem de krøllede parenteser fra headerfilen (og erstatter den med et semikolon, som skal til for at afslutte funktionserklæringen) og flytter den ind i kildefilen: [[Image:kdevelop-32.png|thumb|500px|center]] Bemærk, at jeg blot er begyndt at skrive, og at jeg forventer, at variablen <code>students</code> sandsynligvis skal være en medlemsvariabel i klassen <code>Bus</code>, men at jeg ikke har tilføjet den endnu. Bemærk også hvordan '''KDevelop''' understreger variablen for at gøre det klart, at den endnu ikke ved noget om variablen. Men dette problem kan løses: Klik på variablens navn for at få følgende værktøjstip frem: [[Image:kdevelop-33.png|thumb|500px|center]] (Det samme kan opnås ved at højreklikke på navnet og vælge <menuchoice>Løs: Erklær som</menuchoice>.) Lad mig vælge <menuchoice>3 - private unsigned int</menuchoice> (enten med musen eller ved at taste <keycap>Alt + 3</keycap>) og se, hvordan det viser sig i headerfilen: [[Image:kdevelop-34.png|thumb|500px|center]] Det er værd at bemærke, at '''KDevelop''' udleder den type, som variablen skal erklæres til fra det udtryk, som bruges til at initialisere den. Hvis vi for eksempel havde skrevet følgende tvivlsomme tilføjelse, så ville den have foreslået at erklære variablen som typen <code>double</code>: [[Image:kdevelop-35.png|thumb|500px|center]] En sidste bemærkning: Funktionen <menuchoice>Kode -> Flyt ind i kilden</menuchoice> indsætter ikke altid medlemsfunktonen der, hvor du ønsker den. For eksempel ønsker du måske at den bliver markeret som <code>inline</code> og placeret nederst i headerfilen. I sådan et tilfælde kan du skrive erklæringen og begynde at skrive funktionsdefinitionen sådan her: [[Image:kdevelop-36.png|thumb|500px|center]] '''KDevelop''' giver dig automatisk alle de mulige fuldførelser af, hvad der kan komme her. Vælg et af de to punkter med <code>add_students</code> for at få følgende kode, som allerede udfylder den fuldstændige liste af argumenter: [[Image:kdevelop-37.png|thumb|500px|center]] <span id="Documenting_declarations"></span> ==== Dokumentation af erklæringer ==== God kode har god dokumentation både af funktionernes implementering af algoritmer og af interfacet — dvs. klasser (medlems- og globale) funktioner og (medlems- og globale) variable skal dokumenteres for at forklare deres formål, mulige værdier af argumenter, pre- og postbetingelser osv. Med hensyn til dokumentation af interfacet er [http://www.doxygen.org doxygen] blevet en de facto-standard for formatering af kommentarer, som kan trækkes ud og vises i søgbare websider. '''KDevelop''' understøtter denne kommentarstil ved at give dig en genvej til at generere en skabelon til kommentarer, som dokumenterer en klasse eller medlemsfunktion. Antag for eksempel, at du allerede har skrevet denne kode: {{Input|<syntaxhighlight lang="cpp"> class Car { public: std::string get_color () const; }; </syntaxhighlight>}} Nu vil du føje dokumentation til både klasse og medlemsfunktioner. For at gøre det flytter du markøren hen på første linje og vælger menuen <menuchoice>Kode -> Dokumentér erklæring</menuchoice> eller taster <keycap>Alt + Shift + D</keycap>. '''KDevelop''' vil reagere ved at tilføje følgende: [[Image:kdevelop-23.png|thumb|550px|center]] Markøren er allerede i det grå område, sådan at du kan skrive en kort beskrivelse af denne klasse (efter doxygen-nøgleordet <code>@brief</code>). Du kan så fortsætte med at føje mere detaljeret dokumentation til denne kommentar. [[Image:kdevelop-24.png|thumb|550px|center]] Mens markøren er inde i kommentaren, er teksten fremhævet med grønt (fremhævningen forsvinder, når du flytter markøren ud af kommentaren). Når du kommer til slutningen af en linje taster du <keycap>Enter</keycap>, så vil '''KDevelop''' automatisk starte en ny linje, som begynder med en asterisk og placere markøren et tegn længere inde. Lad os nu dokumentere medlemsfunktionen. Flyt markøren til den linje, hvor funktionen erklæres og vælg menuen <menuchoice>Kode -> Dokumentér erklæring</menuchoice> ellet tast <keycap>Alt + Shift D</keycap>: [[Image:kdevelop-25.png|thumb|550px|center]] Igen genererer '''KDevelop''' automatisk en kommentarskabelon, som inkluderer dokumentation af funktionen selv og af dens returtype. I det aktuelle tilfælde er fuktionens navn ret selvforklarende, men det er tit ikke tilfældet med argumenterne, så de skal dokumenteres hver for sig. For at illustrere dette betragter vi ee lidt mere interessant funktion og kommentaren, som '''KDevelop''' genererer automatisk: [[Image:kdevelop-26.png|thumb|550px|center]] Her indeholder den foreslåede kommentar for eksempel allerede Doxygen-felterne til de enkelte parametre. <span id="Renaming_variables,_functions_and_classes"></span> ==== Omdøb variable, funktioner og klasser ==== Undertiden ønsker man at omdøbe en funktion, klasse eller variabel. Lad os for eksempel sige, at du allerede har dette: [[Image:kdevelop-38.png|thumb|550px|center]] Du opdager så, at du ikke er glad for funktionsnavnet <code>remove_students</code> og fx hellere ville have kaldt den <code>throw_out_students</code>. Du kunne foretage en søgning-og-erstatning efter navnet, den det hat to ulemper: * Funktionen bliver måske bruge i flere filer. * Vi vil kun omdøbe denne funktion og ikke berøre andre funktioner, som måske har samme navn men bliver erklærede i andre klasser eller navnerum. Begge disse problemer kan løses ved at flytte markøren hen på et hvilken som helst sted, hvor funktionsnavnet optræder og så vælge menuen <menuchoice>Kode -> Omdøb erklæring</menuchoice> (eller højreklik på navnet og vælg <menuchoice>Omdøb Bus::remove_students</menuchoice>). Dette får en dialog til at dukke op, hvor du kan angive funktionens nye navn, og hvor du også kan se alle de steder, hvor funktionen faktisk bruges: [[Image:kdevelop-39.png|thumb|550px|center]] <span id="Code_snippets"></span> ==== Tekststumper ==== De fleste projekter har kodestumper, som man ofte har brug for at skrive i kildekoden. Nogle eksempler: skriver man en kompiler, så har man brug for løkker over alle instruktioner; til en brugerflade skal man tjekke, at brugerinput er gyldigt og åbne en fejlmeddelelsesboks hvis ikke; i mit eget projekt forekommer denne slags linjer ofte: {{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>}} I stedet for at skrive denne tekst igen og igen (med alle de muligheder for tastefejl, som det medfører), så kan værktøjet <menuchoice>Tekststumper</menuchoice> være nyttigt her. Åbn værktøjsvisningen (se [[Special:myLanguage/KDevelop4/Manual/Working with source code#Tools and views|Værktøjer og visninger]], hvis den tilsvarende knap ikke allerede findes i vindueskanten) eller vælg <menuchoice>Vindue -> Værktøjsvisninger</menuchoice> i menulinjen og aktivér <menuchoice>Tekststumper</menuchoice>. Klik så på knappen <menuchoice>Tilføj depot</menuchoice> (et lidt misvisende navn — med den kan du lave en navngiven samling af tekststumper til en bestemt slags kildekode, fx C++) og lav et tomt depot. Klik så på knappen {{Plus}} for at kalde følgende dialog frem: [[Image:kdevelop-40.png|thumb|500px|center]] {{Note/da|1=Tekststumpens navn må ikke indeholde blanktegn eller andre specielle tegn, fordi den skal ligne et almindeligt navn på en funktion eller variabel (det vil blive klart hvorfor i næste afsnit). Hvis navnet på en tekststump indeholder blanktegn, så bliver knappen <menuchoice>O.k.</menuchoice> blive inaktiv uden yderligere forklaring. Dette er blevet rettet i de seneste udgaver af KDevelop, (se [https://bugs.kde.org/show_bug.cgi?id=274299 KDevelop bug 274299]).}} Når du skriver kode og skal bruge en tekststump, så skriver du blot tekststumpens navn på samme måde, som du ville med enhver funktion eller variabel. Navnet bliver så tilgængeligt for automatisk fuldførelse — det betyder, at du uden problemer kan bruge lange og beskrivende navne til tekststumper, som den ovenfor — og når du accepterer forslaget i værktøjstippet til automatisk fuldførelse (ved for eksempel at taste <keycap>Enter</keycap>), så bliver den allerede indtastede del af tekststumpens navn erstattet af tekststumpens fulde indhold, som bliver korrekt indrykket: [[Image:kdevelop-41.png|thumb|500px|center]] Bemærk, at værktøjsvisningen <menuchoice>Tekststumper</menuchoice> ikke behøver at være åben for at dette skal virke: du har kun brug for værktøjsvisningen når du skal definere nye tekststumper. En alternativ, men måske knap så bekvem måde at indsætte tekststumper er simpelt hen at klikke på den i værktøjsvisningen. {{Note/da|1=Tekststumper kan meget mere, end hvad der lige er blevet forklaret. En fuld beskrivelse af, hvad du kan gøre med tekststumper finder du i [[Special:myLanguage/KDevelop4/Manual/Tool_list#Snippets|den detaljerede dokumentation af værktøjet Tekststumper]].}}<span id="Modes and working sets"></span> <span id="Modes_and_working_sets"></span> === Tilstande og arbejdssæt === [[Image:kdevelop4_noworkingset.png|thumb|300px|center]] Hvis du er kommet så langt, så se lidt på øverste højre hjørne af '''KDevelops''' hovedvindue. Som det ses i billedet finder du her de tre ''tilstande'', som '''KDevelop''' kan være i: <menuchoice>Kode</menuchoice> (den tilstand, som vi diskuterer i dette kapitel om arbejdet med kildekoden), <menuchoice>Fejlsøgning</menuchoice> (se [[Special:myLanguage/KDevelop4/Manual/Debugging programs|Fejlsøgning af programmer]]) og <menuchoice>Eftersyn</menuchoice> (se [[Special:myLanguage/KDevelop4/Manual/Working with version control systems|Arbejdet med versionskontrolsystemer]]). [[Image:kdevelop4_sessionsprojectsworkingsets.png|thumb|250px|center]] Hver tilstand har sit eget sæt af værktøjer i vindueskanten og sit eget ''arbejdssæt'' af aktuelt åbne filer og dokumenter. Desuden er hvert arbejdssæt knyttet til en session, svarende til den sammenhæng, der vises i billedet ovenfor. Bemærk, at filerne i arbejdssættet hører til samme session med kan komme fra forskellige projekter, som hører til samme session. Hvis du åbner '''KDevelop''' for første gang, så er arbejdssættet tomt — der er ingen åbne filer. Men idet du åbner filer for redigering (eller fejlsøgning eller eftersyn i de andre tilstande), så vokser dit arbejdssæt. Som du kan se på billedet herunder, så viser et symbol i fanebladet at arbejdssættet ikke er tomt. Bemærk, at nå du lukker '''KDevelop''', gemmes arbejdssættet og det genetableres, når du genstarter programmet, dvs. at du får det samme sæt af åbne filer. [[Image:kdevelop-10.png|thumb|300px|center]] Hvis du lader musen svæve over symbolet for et arbejdssæt, så dukker der et værktøjstip frem, som viser dig hvilke filer, der aktuelt er åbne i dette arbejdssæt (her filerne <code>step-32.cc</code> og <code>step-1.cc</code>). Klikker du på det røde minustegn, så lukkes fanebladet med den tilsvarende fil. Klikker du på <menuchoice>Luk</menuchoice>, så lukkes hele arbejdssættet på en gang (dvs. alle åbne filer lukkes). Pointen med at lukke et arbejdssæt er, at det ikke bare lukker alle filer men faktisk gemmer det og åbner et nyt, endnu tomt sæt. Det kan du se her: [[Image:kdevelop-11.png|thumb|300px|center]] Bemærk de to symboler til venstre for det tre tilstandsfaneblade (hjertet og det uidentificérbare symbol til venstre for det). Hver af disse symboler repræsenterer et gemt arbejdssæt. Hvis du lader musen svæve over hjertesymbolet, så ser du noget i retning af dette: [[Image:kdevelop-12.png|thumb|600px|center]] Det viser dig, at det tilsvarende arbejdssæt indeholder to filer og deres tilsvarende projektnavne: <code>Makefile</code> og <code>changes.h</code>. Klikker du på <menuchoice>Indlæs</menuchoice>, så gemmes og lukkes det aktuelle arbejdssæt (i eksemplet her har det filerne <code>tria.h</code> og <code>tria.cc</code> åbne) og åbner i stedet det valgte arbejdssæt. Du kan også slette et arbejdssæt permanent.<span id="Some useful keyboard shortcuts"></span> <span id="Some_useful_keyboard_shortcuts"></span> === Nogle nyttige tastaturgenveje === '''KDevelops''' editor bruger standard-tastaturgenveje til alle almindelige redigeringsoperationer. Den understøtter dog også et antal mere avancerede operationer, når man redigerer kode; nogle af disse er bundet til forskellige tastekombinationer. De følgende er ofte nyttige: {| border="1" cellspacing="0" !colspan="2" style="background-color:#ffff99;" | Hop rundt i kildekode |- |<keycap>Ctrl+Alt+O</keycap> | Åbn fil hurtigt: skriv en del af et filnavn og vælg blandt alle de filer i den aktuelle sessions projektmapper, som matcher strengen; filen bliver så åbnet |- |<keycap>Ctrl+Alt+C</keycap> | Åbn klasse hurtigt: skriv en del af navnet på en klasse og vælg imellem de klasser der matcher; markøren vil hoppe til det sted, hvor klassen erklæres |- |<keycap>Ctrl+Alt+M</keycap> | Åbn funktion hurtigt: skriv en del af navnet på en (medlems)funktion og vælg imellem de funktioner der matcher. Bemærk, at listen både viser erklæringer og definitioner. Markøren vil hoppe til det valgte sted |- |<keycap>Ctrl+Alt+Q</keycap> | Åbn hurtigt: skriv hvad som helst (filnavn, klassenavn, funktionsnavn) og få en liste over alt det, der matcher til at vælge fra |- |<keycap>Ctrl+Alt+N</keycap> |Oversigt: Vis en liste over alt, hvad der sker i denne fil, dvs. klasseerklæringer og funktionsdefinitioner |- |<keycap>Ctrl+,</keycap> |Hop til definitionen af en funktion, hvis markøren i øjeblikket er på en funktionserklæring |- |<keycap>Ctrl+.</keycap> |Hop til en erklæring af en funktion eller variabel hvis markøren i øjeblikket er i en funktionsdefinition |- |<keycap>Ctrl+Alt+PageDown</keycap> |Hop til den næste funktion |- |<keycap>Ctrl+Alt+PageUp</keycap> |Hop til den forrige funktion |- |<keycap>Ctrl+G</keycap> |Gå til linje |- |- !colspan="2" style="background-color:#ffff99;" | Søg og erstat |- |<keycap>Ctrl+F</keycap> |Find |- |<keycap>F3</keycap> |Find næste |- |<keycap>Ctrl+R</keycap> |Erstat |- |<keycap>Ctrl+Alt+F</keycap> |Find og erstat i flere filer |- !colspan="2" style="background-color:#ffff99;" | Andre ting |- |<keycap>Ctrl+_</keycap> |Fold et lokalt niveau sammen: skjul denne blok, for eksempel hvis du ønsker at fokusere på det overordnede billede i en funktion |- |<keycap>Ctrl++</keycap> |Udfold et lokalt niveau: Omgør sammenfoldning |- |<keycap>Ctrl+D</keycap> |Udkommentér den markerede tekst eller den aktuelle linje |- |<keycap>Ctrl+Shift+D</keycap> |Fjern udkommentering af den markerede tekst eller den aktuelle linje |- |<keycap>Alt+Shift+D</keycap> |Dokumentér erklæring. Hvis markøren er på erklæringen af en funktion eller klasse, så laves der en doxygen-agtig kommentar med alle funktionens parametre, returværdi osv. |- |<keycap>Ctrl+T</keycap> |Byt det aktuelle og det forrige tegn |- |<keycap>Ctrl+K</keycap> |Slet den aktuelle linje (bemærk: dette er ikke emacs' "slet herfra og til linjens afslutning") <!--{-->|} {{Prevnext2 | prevpage=Special:MyLanguage/KDevelop4/Manual/Sessions_and_projects | nextpage=Special:MyLanguage/KDevelop4/Manual/Code_generation_with_templates | prevtext=Sessioner og projekter | nexttext=Kodegenerering med skabeloner | index=Special:MyLanguage/KDevelop4/Manual | indextext=Indholdsfortegnelse }} [[Category:Udvikling/da]]
Toggle limited content width