summaryrefslogtreecommitdiffstats
path: root/doc/kdevelop/kdevelop-survey.docbook
blob: 9fe32d2dcf4e2b6561273f8f4f12d0ec0ddba6d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
<chapter id="kdevelop-survey">

<chapterinfo>
  <authorgroup>
    <author><firstname>Bernd</firstname><surname>Pol</surname></author>
    <!-- ROLES_OF_TRANSLATORS -->
  </authorgroup>
</chapterinfo>

<title>Overview of &kdevelop; Features</title>

<indexterm zone="kdevelop-survey">
  <primary>&kdevelop;</primary>
  <secondary>survey</secondary></indexterm>
<indexterm zone="kdevelop-survey">
  <primary>overall view</primary></indexterm>
<indexterm zone="kdevelop-survey">
  <primary>survey</primary></indexterm>

<para>
&kdevelop; integrates a lot of tools, scripts, and templates in a common user interface. Basically it consists of

<itemizedlist>
  <listitem><para>
  several <link  linkend="uimodes-survey">user interface modes</link> from which you can select the look and feel of the workspace,
  </para></listitem>
  <listitem><para>
  an <link linkend="applicationwizard">&appwizard;</link> which aids you in setting up a new project,
  </para></listitem>
  <listitem><para>
  several <link linkend="makesystems">project management systems</link> which aid in building and managing your project,
  </para></listitem>
  <listitem><para>
  some <link linkend="editing">editing tools</link> to easily work on your program texts
  </para></listitem>
  <listitem><para>
  various <link linkend="file-browsers">file browsers</link> providing you different views on your file system,
  </para></listitem>
  <listitem><para>
  various <link linkend="class-browsers">class browsers</link> to aid you in maintaining the classes and their relationships of your object-oriented programming project,
  </para></listitem>
  <listitem><para>
  a <link linkend="debugger">debugger interface</link> to find and remove program errors from within &kdevelop;, and
  </para></listitem>
  <listitem><para>
  several <link linkend="plugin-tools">plugin tools</link>, extensible modules which can be loaded at runtime and on demand.  This allows you to only turn on those features you really need.
  </para></listitem>
  <listitem><para>
  a set of other diagnosis, documentation, and optimization helper tools.
  </para></listitem>
</itemizedlist>
</para>

<note>
  <para>
  In fact there are three &kdevelop;-based applications:
  </para>
  <itemizedlist>
    <listitem><para>The &kdevelop; IDE &mdash; this is the place where you will usually work.</para></listitem>
    <listitem><para>The stand-alone &kdevelop; Assistant documentation browser &mdash; isolates all the powerful documentation facilities of the &kdevelop; IDE in a separate tool. This comes in handy when you want to look up some programming documentation but do not want to start the full IDE.</para></listitem>
    <listitem><para>The &kdevelop; Designer &mdash; enhances the &Qt; User Interface Designer by &kde; specific elements and integrates nicely in the &kdevelop; IDE.</para></listitem>
  </itemizedlist>
</note>


<sect1 id="uimodes-survey">
<title>Available User Interface Modes</title>

<indexterm zone="uimodes-survey">
  <primary>&kdevelop;</primary>
  <secondary>user interface modes</secondary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>user interface</primary>
  <secondary>&kdevelop; modes</secondary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>UI modes</primary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>Child Frame Windows</primary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>Tabbed Pages</primary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>Toplevel Windows</primary></indexterm>
<indexterm zone="uimodes-survey">
  <primary>IDEAl</primary></indexterm>

<para>
&kdevelop; offers developers four separate user interface modes (click on the mode name to view an example):
<itemizedlist>
  <listitem><para><link linkend="ideal-desc">IDEAl</link></para>
  <para>
  This is a novel user interface approach optimizing both work space and intuitive handling of the tools.
  </para>
  <itemizedlist>
    <listitem><para>
    All tool views are docked in a tabbar fashion around the mainframe area. They are grouped left, bottom, and right according to the services provided.
    </para></listitem>
    <listitem><para>
    Editor and browser views will be stacked in a big sized tabbed window inmidst the mainframe area.
    </para></listitem>
  </itemizedlist>
  </listitem>

  <listitem>
  <para><link linkend="mdi-desc">Child Frame Windows</link></para>
  <itemizedlist>
    <listitem><para>All tool views are initially docked to the mainframe.</para></listitem>
    <listitem><para>Editor and browser views will live like toplevel windows within a view area of the mainframe.</para></listitem>
  </itemizedlist>
  </listitem>

  <listitem>
  <para><link linkend="tabbed-desc">Tabbed Pages</link></para>
  <itemizedlist>
    <listitem><para>
    All tool views are initially docked to the mainframe.
    </para></listitem>
    <listitem><para>
    Editor and browser views will be stacked in a tabbed window.
    </para></listitem>
  </itemizedlist>
  </listitem>

  <listitem>
  <para><link linkend="toplevel-desc">Toplevel Windows</link></para>
  <itemizedlist>
    <listitem><para>
    All editor, browser, and tool views will be toplevel windows directly on the desktop.
    </para></listitem>
    <listitem><para>
    The main widget only contains the menu, toolbars, and statusbar.
    </para></listitem>
  </itemizedlist>
  </listitem>

</itemizedlist>
</para>

<sect2 id="uimodes-switch">
<title>How to Switch User Interface Modes</title>

<indexterm zone="uimodes-switch">
  <primary>user interface</primary>
  <secondary>switch modes</secondary></indexterm>
<indexterm zone="uimodes-switch">
  <primary>switch UI modes</primary></indexterm>

<para>
To switch the user interface mode select <menuchoice> <guimenu>Settings</guimenu> <guimenuitem>Configure KDevelop...</guimenuitem> </menuchoice> from the menus. The <guilabel>Customize KDevelop</guilabel> dialog will pop up, where you have to select <guilabel>User Interface</guilabel> in the left hand tree. This will display the settings page shown below.
</para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="select-user-interface.png" format="PNG"/>
    </imageobject>
    <caption><para>
    Select a user interface mode
    </para></caption>
  </mediaobject>
</screenshot>

<para>
(Older &kdevelop; versions provide the top mode selection section only.)
</para>

<para>
In the <guilabel>Major User-Interface Mode</guilabel> section select the radio button of the user interface mode you want to work in.
</para>
<para>
Dependent on the user interface mode you selected, other configuration sections will become available where you can taylor more details of the look and feel to your preferences. See the <link linkend="setup-ui">Selecting the User Interface</link> chapter for more detail.
</para>

<note><para>
Do not forget to restart &kdevelop; in order to let your selections take effect.
</para></note>

</sect2> <!-- uimodes-switch -->

<sect2 id="maximize-workspace">
<title>How to Maximize the Work Space Area</title>

<indexterm zone="maximize-workspace">
  <primary>&kdevelop;</primary>
  <secondary>work space</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>&kdevelop;</primary>
  <secondary>maximize work space</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>user interface</primary>
  <secondary>work space</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>user interface</primary>
  <secondary>menubar</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>user interface</primary>
  <secondary>full screen mode</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>full screen mode</primary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>menubar</primary>
  <secondary>hide/unhide</secondary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>hide menubar</primary></indexterm>
<indexterm zone="maximize-workspace">
  <primary>unhide menubar</primary></indexterm>

<para>
To maximize space, there is a full-screen window mode available which expands the mainframe area to the screen borders. Additional space can be reclaimed by hiding the menubar. And you can of course hide any toolbar as usual in <application>KDE</application> applications.
</para>

<variablelist>
<varlistentry>
<term>Full Screen Mode</term>
<listitem>
<para>
To switch to or from full screen mode select <menuchoice>
<guimenu>View</guimenu> <guimenuitem>Full-Screen Mode</guimenuitem>
</menuchoice> from the menus or press
<keycombo>&Ctrl;&Shift;<keycap>F</keycap> </keycombo>. There is also a
<guiicon>Full-Screen Mode</guiicon> icon in the <guilabel>Browse
Toolbar</guilabel> available.</para>
</listitem>
</varlistentry>

<varlistentry>
<term>Hide/Unhide the Menubar</term>
<listitem>
<para>
To <emphasis>hide</emphasis> the menubar select <menuchoice> <guimenu>Settings</guimenu> <guimenuitem>Show Menubar</guimenuitem> </menuchoice> from the menus or press <keycombo>&Ctrl;<keycap>M</keycap> </keycombo>. You may also include a <guiicon>Show Menubar</guiicon> icon in a suiting toolbar, &eg; the <guilabel>Browse Toolbar</guilabel> for that purpose. To <emphasis>unhide</emphasis> the menubar you must press <keycombo> &Ctrl;<keycap>M</keycap> </keycombo> or use the <guiicon>Show Menubar</guiicon> icon if available.
</para>
</listitem>
</varlistentry>
</variablelist>

</sect2> <!-- maximize-workspace -->

</sect1> <!-- uimodes-survey -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="ui-elements">
<title>Elements of the User Interface</title>

<para>
(... to be written ...)
</para>

<sect2 id="ui-elements-workarea">
<title>The Workarea</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-workarea -->

<sect2 id="ui-elements-titlebar">
<title>The &kdevelop; Titlebar</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-titlebar -->

<sect2 id="ui-elements-statusbar">
<title>The &kdevelop; Statusbar</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-statusbar -->

<sect2 id="ui-elements-menubar">
<title>The menubar</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-menubar -->

<sect2 id="ui-elements-toolbars">
<title>The Toolbars</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-toolbars -->

<sect2 id="ui-elements-treetoolviews">
<title>The Tree Tool Views</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-treetoolviews -->

<sect2 id="ui-elements-outputtoolviews">
<title>The Output Tool Views</title>

<para>
(... to be written ...)
</para>
</sect2> <!-- ui-elements-outputtoolviews -->

</sect1> <!-- ui-elements -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="makesystems">
<title>Project Management Systems</title>

<indexterm zone="makesystems">
  <primary>project management</primary></indexterm>

<para>
Globally, a project will rely on some form of project management system.  &kdevelop; offers four <emphasis>project management systems</emphasis> the programmer can select from when creating a new project.

<itemizedlist>
  <listitem><para>
  <link linkend="automake-project">Automake projects</link> use the &GNU; standard development tools.
  </para></listitem>
  <listitem><para>
  <link linkend="qmake-project">QMake projects</link> use the trolltech QMake project manager.
  </para></listitem>
  <listitem><para>
  <link linkend="ant-project">ANT projects</link> use the Apache ANT project manager for &Java; development.
  </para></listitem>
  <listitem><para>
  <link linkend="custom-project">Custom projects</link> require you to maintain your own <filename>Makefiles</filename>.
  </para></listitem>
</itemizedlist>
</para>

<sect2 id="automake-project">
<title>Automake Projects</title>

<indexterm zone="automake-project">
  <primary>projects</primary>
  <secondary>automake</secondary></indexterm>
<indexterm zone="automake-project">
  <primary>automake</primary>
  <secondary>projects</secondary></indexterm>

<para>
Projects created with &kdevelop;'s &automanag; make it very easy for developers to use the &GNU; standard development tools. They provide
<itemizedlist>
  <listitem><para>
  a better way of <filename>Makefile</filename> generation and
  </para></listitem>
  <listitem><para>
  a good and safe way for fast adaption towards different systems by autoconf-generated <filename>configure</filename> scripts.
  </para></listitem>
</itemizedlist>
</para>
</sect2> <!-- automake-project -->

<sect2 id="qmake-project">
<title>QMake Projects</title>

<indexterm zone="qmake-project">
  <primary>projects</primary>
  <secondary>qmake</secondary></indexterm>
<indexterm zone="qmake-project">
  <primary>qmake</primary>
  <secondary>projects</secondary></indexterm>

<para>
For developers who enjoy the flexibility and feel of &Qt;'s qmake system, &kdevelop; offers the ability to handle qmake based projects (.pro files) within the &GUI;.
</para>
<para>
For more information on the QMake project manager see the <quote>qmake User Guide</quote> which should be included in your distribution or have a look at the <ulink url="http://doc.trolltech.com/">TROLLTECH Documentation</ulink> home page where you may find the QMake documentation of your <quote>Qt C++ GUI Application Development Toolkit</quote> version.
</para>
</sect2> <!-- qmake-project -->

<sect2 id="cmake-project">
<title>CMake Projects</title>

<indexterm zone="cmake-project">
  <primary>projects</primary>
  <secondary>cmake</secondary></indexterm>
<indexterm zone="cmake-project">
  <primary>cmake</primary>
  <secondary>projects</secondary></indexterm>

<para>
CMake will be the &kde; build system for &kde; 4 and &kdevelop; already
provides you some CMake based templates in C and C++. You only need the cmake
program in your $<envar>PATH</envar> to build them.
</para>
<para>
To set up a new C or C++ project in &kdevelop; select
<menuchoice><guimenu>Project</guimenu>
<guimenuitem>New Project...</guimenuitem>
<guimenuitem>C or C++</guimenuitem> 
<guimenuitem>CMake based projects</guimenuitem>
<guimenuitem>A shared library template or Hello world program</guimenuitem> 
</menuchoice>.
</para>
</sect2> <!-- cmake-project -->

<sect2 id="ant-project">
<title>ANT Projects (&Java; Projects)</title>

<indexterm zone="ant-project">
  <primary>projects</primary>
  <secondary>ant</secondary></indexterm>
<indexterm zone="ant-project">
  <primary>ant</primary>
  <secondary>projects</secondary></indexterm>
<indexterm zone="ant-project">
  <primary>projects</primary>
  <secondary>Java</secondary></indexterm>
<indexterm zone="ant-project">
  <primary>Java</primary>
  <secondary>projects</secondary></indexterm>
<indexterm zone="ant-project">
  <primary>development</primary>
  <secondary>Java</secondary></indexterm>

<para>
&Java; developers may want to use the Apache ANT project manager for their projects. To set up a new Ant project in &kdevelop; select <menuchoice><guimenu>Project</guimenu>
<guimenuitem>New Project...</guimenuitem>
<guimenuitem>Java</guimenuitem>
<guimenuitem>Ant Project</guimenuitem>
<guimenuitem>Application</guimenuitem></menuchoice>.
</para>
<para>
For more information see <ulink url="http://ant.apache.org/">The Apache Ant Project</ulink> home page.
</para>
</sect2> <!-- ant-project -->

<sect2 id="custom-project">
<title>Custom Projects</title>

<indexterm zone="custom-project">
  <primary>projects</primary>
  <secondary>custom</secondary></indexterm>
<indexterm zone="custom-project">
  <primary>custom projects</primary></indexterm>
<indexterm zone="custom-project">
  <primary>Makefile</primary>
  <secondary>custom projects</secondary></indexterm>

<para>
If you prefer to maintain your own <filename>Makefiles</filename> for your project you may use the custom project option of &kdevelop;. This may be feasible in unusually structured projects or if you want to retain full control over the <command>make</command> process.
</para>
<para>
Yet, if you do not <emphasis>really need</emphasis> the extra flexibility and control of the custom project manager you should consider &automanag; or one of the other project managers, because they considerably ease the program building and distribution processes.
</para>
</sect2> <!-- custom-project -->

<sect2 id="makesystems-distribution">
<title>How to Distribute Your Application</title>

<indexterm zone="makesystems-distribution">
  <primary>distribution</primary></indexterm>
<indexterm zone="makesystems-distribution">
  <primary>application</primary>
  <secondary>distribution</secondary></indexterm>
<indexterm zone="makesystems-distribution">
  <primary>binary packages</primary></indexterm>

<para>
The distribution of your applications does not require the end-user to have anything different installed other than
<itemizedlist>
  <listitem><para>an appropriate compiler,</para></listitem>
  <listitem><para>a linker, and</para></listitem>
  <listitem><para>the appropriate development libraries,</para></listitem>
</itemizedlist>
</para>
<para>
which at least for C++ applications is most often the case. But you can as well distribute <emphasis>binary packages</emphasis> of your application.
<!-- ### more detail on binary construction needed somewhere -->
In either way, the end-user of your product does not need &kdevelop; installed.
</para>
<para>
For giving away your sources, we advise to include the <emphasis>project file</emphasis> of &kdevelop; as well. This makes it very easy for other developers&mdash;if they use &kdevelop;&mdash;to work with your sources.
</para>
<para>
For projects where <emphasis>several developers</emphasis>, maybe working on different places, are involved, this should be the case anyway. So you can ensure consistency of the <filename>Makefiles</filename> to not run into trouble.
</para>
<para>
Especially on multi language applications, <emphasis>translators</emphasis> won't actually work with the source code, except in cases that require correction for enabling translation support.
</para>

</sect2> <!-- makesystems-distribution -->

</sect1> <!-- makesystems -->

</chapter> <!-- kdevelop-survey -->