Added KWinGrid
[kwingrid.git] / main.cc
1 #include <stdlib.h>
2 #include <kuniqueapplication.h>
3 #include <klocale.h>
4 #include <kcmdlineargs.h>
5 #include <kaboutdata.h>
6 #include <kdebug.h>
7 #include <kglobalaccel.h>
8 #include <qnamespace.h>
9
10 #include "kwingrid.h"
11
12 static KCmdLineOptions winGridOpts[] =
13 {
14     { "split <width>", I18N_NOOP("split"), 0 },
15     { "+hgap", I18N_NOOP("hgap"), 0 },
16     { "+vgap", I18N_NOOP("vgap"), 0 },
17     { "+hsplit", I18N_NOOP("hsplit"), 0 },
18     { "+vsplit", I18N_NOOP("vsplit"), 0 },
19     { 0,0,0 }
20 };
21
22 /* Die optimalen werte für hgap und vgap berechnen sich zu:
23  *
24  * gap = size%split + n*split
25  *
26  * für n = 0,1,2,... und size die Bildschirmgröße in der jeweiligen Richtung
27  */
28
29 int main(int argc, char **argv)
30 {
31     KAboutData * aboutdata = new KAboutData("kwingrid","KWinGrid","0.5",
32                                             I18N_NOOP("Window Grid"),
33                                             KAboutData::License_GPL,
34                                             "(C) 1999,2000,2002,2004 Stefan Bund",
35                                             "", "http://www.j32.de/");
36     aboutdata->addAuthor("Stefan Bund",I18N_NOOP("Developer"),"stefab@j32.de",
37                          "http://www.j32.de");
38   
39     KCmdLineArgs::init(argc, argv, aboutdata);
40     KCmdLineArgs::addCmdLineOptions(winGridOpts);
41     KUniqueApplication::addCmdLineOptions();
42
43     if (! KUniqueApplication::start()) {
44         kdError() << "KWinGrid is already running!" << endl;
45         return 0;
46     }
47
48     KApplication * app = new KUniqueApplication;
49     KCmdLineArgs * args = KCmdLineArgs::parsedArgs();
50
51     if (args->count()!=4) {
52         kdError() << "Invalid arguments. Try --help\n";
53         return 0;
54     }
55
56     int split = 0;
57     if (args->isSet("split"))
58         split=args->getOption("split").toInt();
59     
60     int hgap = atoi(args->arg(0));
61     int vgap = atoi(args->arg(1));
62     int hsplit = atoi(args->arg(2));
63     int vsplit = atoi(args->arg(3));
64
65     args->clear();
66
67     KWinGrid * winGrid = new KWinGrid(hgap,vgap,hsplit,vsplit,split);
68
69     KGlobalAccel * accel = new KGlobalAccel(app);
70
71     accel->insert("move_TL",
72                   I18N_NOOP("Move top-left"),
73                   I18N_NOOP("Move active window top-left"),
74                   Qt::ALT+Qt::SHIFT+Qt::Key_I, KKey::QtWIN+Qt::SHIFT+Qt::Key_I,
75                   winGrid, SLOT ( move_TL() ));
76     accel->insert("move_TR",
77                   I18N_NOOP("Move top-right"),
78                   I18N_NOOP("Move active window top-right"),
79                   Qt::ALT+Qt::SHIFT+Qt::Key_O, KKey::QtWIN+Qt::SHIFT+Qt::Key_O,
80                   winGrid, SLOT ( move_TR() ));
81     accel->insert("move_BL",
82                   I18N_NOOP("Move bottom-left"),
83                   I18N_NOOP("Move active window bottom-left"),
84                   Qt::ALT+Qt::SHIFT+Qt::Key_K, KKey::QtWIN+Qt::SHIFT+Qt::Key_K,
85                   winGrid, SLOT ( move_BL() ));
86     accel->insert("move_BR",
87                   I18N_NOOP("Move bottom-right"),
88                   I18N_NOOP("Move active window bottom-right"),
89                   Qt::ALT+Qt::SHIFT+Qt::Key_L, KKey::QtWIN+Qt::SHIFT+Qt::Key_L,
90                   winGrid, SLOT ( move_BR() ));
91
92     accel->insert("resize_Q",
93                   I18N_NOOP("Resize quarter"), I18N_NOOP("Resize quarter"),
94                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_I, KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_I,
95                   winGrid, SLOT ( resize_Q() ));
96     accel->insert("resize_H",
97                   I18N_NOOP("Resize horizontal"), I18N_NOOP("Resize horizontal"),
98                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_O, KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_O,
99                   winGrid, SLOT ( resize_H() ));
100     accel->insert("resize_V",
101                   I18N_NOOP("Resize vertical"), I18N_NOOP("Resize vertical"),
102                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_K, KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_K,
103                   winGrid, SLOT ( resize_V() ));
104     accel->insert("resize_F",
105                   I18N_NOOP("Resize full"), I18N_NOOP("Resize full"),
106                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_L, KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_L,
107                   winGrid, SLOT ( resize_F() ));
108
109     accel->insert("move_L",
110                   I18N_NOOP("Move left"), I18N_NOOP("Move left"),
111                   Qt::ALT+Qt::SHIFT+Qt::Key_Left, KKey::QtWIN+Qt::SHIFT+Qt::Key_Left,
112                   winGrid, SLOT ( move_L() ));
113     accel->insert("move_R",
114                   I18N_NOOP("Move right"), I18N_NOOP("Move right"),
115                   Qt::ALT+Qt::SHIFT+Qt::Key_Right, KKey::QtWIN+Qt::SHIFT+Qt::Key_Right,
116                   winGrid, SLOT ( move_R() ));
117     accel->insert("move_U",
118                   I18N_NOOP("Move up"), I18N_NOOP("Move up"),
119                   Qt::ALT+Qt::SHIFT+Qt::Key_Up, KKey::QtWIN+Qt::SHIFT+Qt::Key_Up,
120                   winGrid, SLOT ( move_U() ));
121     accel->insert("move_D",
122                   I18N_NOOP("Move down"), I18N_NOOP("Move down"),
123                   Qt::ALT+Qt::SHIFT+Qt::Key_Down, KKey::QtWIN+Qt::SHIFT+Qt::Key_Down,
124                   winGrid, SLOT ( move_D() ));
125
126     accel->insert("resize_IH",
127                   I18N_NOOP("Increase horizontal size"), I18N_NOOP("Increase horizontal size"),
128                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_Right,KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_Right,
129                   winGrid, SLOT ( resize_IH() ));
130     accel->insert("resize_IV",
131                   I18N_NOOP("Increase vertical size"), I18N_NOOP("Increase vertical size"),
132                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_Down,KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_Down,
133                   winGrid, SLOT ( resize_IV() ));
134     accel->insert("resize_DH",
135                   I18N_NOOP("Decrease horizontal size"), I18N_NOOP("Decrease horizontal size"),
136                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_Left,KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_Left,
137                   winGrid, SLOT ( resize_DH() ));
138     accel->insert("resize_DV",
139                   I18N_NOOP("Decrease vertical size"), I18N_NOOP("Decrease vertical size"),
140                   Qt::ALT+Qt::CTRL+Qt::SHIFT+Qt::Key_Up,KKey::QtWIN+Qt::CTRL+Qt::SHIFT+Qt::Key_Up,
141                   winGrid, SLOT ( resize_DV() ));
142     
143     
144     accel->updateConnections();
145
146
147     int ret = app->exec();
148
149     delete app;
150     return ret;
151 }
152