87int main(
int argc,
char **argv)
89 if ((argc==2) && (!strcmp(argv[1],
"?") || !strcmp(argv[1],
"-h") || !strcmp(argv[1],
"-help") || !strcmp(argv[1],
"--help")))
return go4_usage();
91 setlocale(LC_ALL,
"C");
95 gEnv->SetValue(
"X11.XInitThread", 0);
111 std::cerr <<
"Please configure your system correctly and restart go4 again" << std::endl;
116 const char *loghost =
"localhost";
118 const char *logpass =
nullptr;
120 bool prepare_for_client =
false, traceon =
false, usergui =
false, usex11 =
false;
130 std::cerr <<
"Failure, go4 build without x11 and without web support" << std::endl;
135 QString hotstart, dabcnode;
136 QStringList files, httpnodes;
138 for (
int narg = 1; narg < argc; narg++) {
139 if (strlen(argv[narg]) == 0)
142 QString curr(argv[narg]);
144 if (argv[narg][0]==
'-') {
145 if ((curr ==
"--web") || (curr ==
"-web")) {
149 }
else if ((curr ==
"--x11") || (curr ==
"-x11")) {
151 }
else if (curr ==
"-debug") {
152 std::cout <<
"G-OOOO-> MainGo4GUI switched on debug output" << std::endl;
154 }
else if (curr ==
"-gdebug") {
155 if ((narg+1 < argc) && (strlen(argv[narg+1]) > 0) && (argv[narg+1][0]!=
'-'))
156 gDebug = TString(argv[++narg]).Atoi();
159 }
else if ((curr ==
"-observer") || (curr ==
"-controller") || (curr ==
"-admin")) {
161 if (curr ==
"-observer") dologin = 0;
162 if (curr ==
"-controller") dologin = 1;
163 if (curr ==
"-admin") dologin = 2;
165 if ((narg+1<argc) && (argv[narg+1][0]!=
'-'))
166 loghost = argv[++narg];
168 if ((narg+1<argc) && (argv[narg+1][0]!=
'-') && (argv[narg+1][0]>=
'0') && (argv[narg+1][0]<=
'9'))
169 logport = QString(argv[++narg]).toInt();
171 if ((narg+1<argc) && (argv[narg+1][0]!=
'-')) logpass = argv[++narg];
172 }
else if (curr ==
"-prepare") {
173 prepare_for_client =
true;
174 }
else if (curr ==
"-usergui") {
177 }
else if (curr.contains(
".root")) {
178 files.append(argv[narg]);
179 }
else if (curr.contains(
"dabc://")) {
180 dabcnode = argv[narg];
181 }
else if (curr.contains(
"http://") || curr.contains(
"https://")) {
182 httpnodes.append(argv[narg]);
183 }
else if (hotstart.isEmpty()) {
184 hotstart = argv[narg];
185 if(!curr.contains(
".hotstart")) hotstart.append(
".hotstart");
203 const char *_env = gSystem->Getenv(
"GO4SETTINGS");
206 if (_env) settfile = _env;
208 if(iswin32 || settfile.isEmpty() || settfile.contains(
"ACCOUNT")) {
212 if (settfile.contains(
"LOCAL")) settfile = QDir::currentPath() +
"/go4.conf";
213 QString subdir = QFileInfo(settfile).absolutePath();
216 if (gSystem->AccessPathName(subdir.toLatin1().constData(),kWritePermission))
222 if (!usex11 && !useweb) {
223 if (QGuiApplication::platformName() ==
"wayland") {
225 std::cout <<
"Use web graphics on Wayland by default, start go4 --x11 to force Wayland usage" << std::endl;
229 go4sett->setWebBasedCanvas(useweb);
241 double scalefactor =
go4sett->getScreenScaleFactor();
243 std::cout <<
"Use Screen scale factor " << scalefactor <<
" from settings." << std::endl;
244 gSystem->Setenv(
"QT_SCALE_FACTOR",QString(
"%1").arg(scalefactor).toLatin1 ().constData ());
246 TApplication app(
"uno", &argc, argv);
251 argv2[argc++] = (
char *)
"--ignore-gpu-blacklist";
253 argv2[argc] =
nullptr;
255 Q_INIT_RESOURCE(go4icons);
258#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
259#if QT_VERSION >= QT_VERSION_CHECK(5,13,0)
261 if (useweb) QtWebEngine::initialize();
269#if QT_VERSION < QT_VERSION_CHECK(5,13,0)
271 if (useweb) QtWebEngine::initialize();
276 ::setlocale(LC_ALL,
"C");
288 gInterpreter->SetProcessLineLock(kTRUE);
293 if (!go4inc.IsNull())
294 gInterpreter->AddIncludePath(go4inc.Data());
297 gEnv->SetValue(
"Canvas.ShowGuideLines", 0);
304 main->ensurePolished();
307 QApplication::setDoubleClickInterval(400);
308 QApplication::setStartDragTime(150);
310 for (
int i = 0; i < files.size(); ++i)
311 main->Browser()->OpenFile(files.at(i).toLatin1().constData());
313 if (dabcnode.length() > 0)
314 main->Browser()->ConnectDabc(dabcnode.toLatin1().constData());
316 for (
int i = 0; i < httpnodes.size(); ++i)
317 main->ConnectHttpServer(httpnodes.at(i).toLatin1().constData());
319 if (hotstart.length() > 0)
320 main->HotStart(hotstart.toLatin1().constData());
323 main->UserPanelSlot();
326 go4sett->setClientNode(loghost);
327 go4sett->setClientPort(logport);
328 go4sett->setClientDefaultPass(!logpass);
329 go4sett->setClientControllerMode(dologin);
330 main->ConnectServer(
false, logpass);
331 }
else if (prepare_for_client) {
332 main->PrepareForClientConnection(
false);
335 int res = myapp.exec();
int main(int argc, char **argv)
int main(int argc, char **argv)
This is the Go4 Main Window.