277 gtk_window_set_decorated (GTK_WINDOW (splash_window), FALSE);
281 gchar * backcol = g_strdup_printf (
"window#splash {\n"
283 " background-color: rgba(255, 255, 255, 0);}");
285 gtk_widget_set_name (splash_window,
"splash");
288 gtk_window_set_type_hint (GTK_WINDOW (splash_window), GDK_WINDOW_TYPE_HINT_SPLASHSCREEN);
289 gtk_window_set_position (GTK_WINDOW (splash_window), GTK_WIN_POS_CENTER_ALWAYS);
290 gtk_widget_set_app_paintable (splash_window, TRUE);
291 GdkScreen * screen = gtk_widget_get_screen (splash_window);
292 GdkVisual * visual = gdk_screen_get_rgba_visual (screen);
293 gtk_widget_set_visual (splash_window, visual);
295 g_signal_connect(G_OBJECT(splash_window),
"draw", G_CALLBACK(splashdraw), NULL);
299 gtk_window_set_transient_for ((GtkWindow *)splash_window, (GtkWindow *)
MainWindow);
301 return splash_window;
360 end = g_strdup_printf (
"%c", file_name[strlen(file_name)-1]);
361 if (g_strcmp0 (file_name,
"*") == 0 || g_strcmp0 (end,
"*") == 0)
363 if (g_strcmp0 (file_name,
"*") == 0)
365 filedir = g_strdup_printf (
"./");
369 filedir = g_strdup_printf (
"%c", file_name[0]);
370 for (i=1; i<strlen(file_name)-1; i++) filedir = g_strdup_printf (
"%s%c", filedir, file_name[i]);
373 hFind = FindFirstFile (filedir, & ffd);
374 if (hFind != INVALID_HANDLE_VALUE)
376 if (ffd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
378 str = g_strdup_printf (
"%s\\%s", filedir, (gchar *)ffd.cFileName);
382 while (FindNextFile(hFind, &ffd) != 0)
384 if (ffd.dwFileAttributes & ! FILE_ATTRIBUTE_DIRECTORY)
386 str = g_strdup_printf (
"%s\\%s", filedir, (gchar *)ffd.cFileName);
394 d = opendir (filedir);
397 while ((dir = readdir(
d)) != NULL)
399 if (dir -> d_type == DT_REG)
401 str = g_strdup_printf (
"%s/%s", filedir, dir -> d_name);
421 end = g_strdup_printf (
"%c", file_name[strlen(file_name)-1]);
422 if (g_strcmp0 (file_name,
"*") == 0 || g_strcmp0 (end,
"*") == 0)
424 if (g_strcmp0 (file_name,
"*") == 0)
426 filedir = g_strdup_printf (
"./");
430 filedir = g_strdup_printf (
"%c", file_name[0]);
431 for (i=1; i<strlen(file_name)-1; i++) filedir = g_strdup_printf (
"%s%c", filedir, file_name[i]);
434 hFind = FindFirstFile (filedir, & ffd);
435 if (hFind != INVALID_HANDLE_VALUE)
437 if (ffd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
440 active_project -> coordfile = g_strdup_printf (
"%s\\%s", filedir, (gchar *)ffd.cFileName);
443 while (FindNextFile(hFind, &ffd) != 0)
445 if (ffd.dwFileAttributes & ! FILE_ATTRIBUTE_DIRECTORY)
448 active_project -> coordfile = g_strdup_printf (
"%s\\%s", filedir, (gchar *)ffd.cFileName);
455 d = opendir (filedir);
458 while ((dir = readdir(
d)) != NULL)
460 if (dir -> d_type == DT_REG)
463 active_project -> coordfile = g_strdup_printf (
"%s/%s", filedir, dir -> d_name);
573 GError * error = NULL;
574 gchar * proc_dir = NULL;
575 gchar * proc_path = NULL;
576 const char * proc_name;
578 proc_dir = g_build_filename (PACKAGE_PREFIX,
"bin", NULL);
579 proc_name =
"atomes_startup_testing.exe";
580 proc_path = g_build_filename (proc_dir, proc_name, NULL);
582 proc_dir = g_build_filename (PACKAGE_LIBEXEC, NULL);
583 proc_name =
"atomes_startup_testing";
584 proc_path = g_build_filename (PACKAGE_LIBEXEC, proc_name, NULL);
587 g_print (
"proc_dir= %s\n", proc_dir);
588 g_print (
"proc_name= %s\n", proc_name);
589 g_print (
"proc_path= %s\n", proc_path);
593 GSubprocess * proc = g_subprocess_new (G_SUBPROCESS_FLAGS_NONE, & error, proc_path, NULL);
596 GSubprocessLauncher * proc_launch = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE);
597 g_subprocess_launcher_set_cwd (proc_launch, proc_dir);
598 GSubprocess * proc = g_subprocess_launcher_spawn (proc_launch, & error, proc_path, NULL);
600 GSubprocess * proc = g_subprocess_new (G_SUBPROCESS_FLAGS_NONE, & error, proc_path, NULL);
606 g_print (
"error: %s\n", error -> message);
607 g_clear_error (& error);
609 g_subprocess_wait (proc, NULL, & error);
610 int res = g_subprocess_get_exit_status (proc);
612 g_debug (
"Exit status of atomes_startup_testing = %d",
res);
614 g_clear_object (& proc);
617 g_clear_object (& proc_launch);
622 gchar * ogl_info = NULL;
626 ogl_info = g_strdup_printf (
"Fatal error on OpenGL initialization: trying to adjust environment !");
629 ogl_info = g_strdup_printf (
"Impossible to initialize the OpenGL 3D rendering !");
632 ogl_info = g_strdup_printf (
"GDK visual must be modified to initialize the OpenGL context !");
639 g_print (
"%s\n", ogl_info);
654int main (
int argc,
char *argv[])
656 gboolean RUNC = FALSE;
659 PACKAGE_PREFIX = g_win32_get_package_installation_directory_of_module (NULL);
663 PACKAGE_IMP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/import.png", NULL);
664 PACKAGE_IMP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/import.png", NULL);
665 PACKAGE_CON = g_build_filename (PACKAGE_PREFIX,
"pixmaps/convert.png", NULL);
666 PACKAGE_IMG = g_build_filename (PACKAGE_PREFIX,
"pixmaps/image.png", NULL);
667 PACKAGE_PDF = g_build_filename (PACKAGE_PREFIX,
"pixmaps/pdf.png", NULL);
668 PACKAGE_SVG = g_build_filename (PACKAGE_PREFIX,
"pixmaps/svg.png", NULL);
669 PACKAGE_EPS = g_build_filename (PACKAGE_PREFIX,
"pixmaps/eps.png", NULL);
670 PACKAGE_PNG = g_build_filename (PACKAGE_PREFIX,
"pixmaps/png.png", NULL);
671 PACKAGE_JPG = g_build_filename (PACKAGE_PREFIX,
"pixmaps/jpg.png", NULL);
672 PACKAGE_BMP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bmp.png", NULL);
673 PACKAGE_TIFF = g_build_filename (PACKAGE_PREFIX,
"pixmaps/tiff.png", NULL);
674 PACKAGE_VOID = g_build_filename (PACKAGE_PREFIX,
"pixmaps/void.png", NULL);
675 PACKAGE_GR = g_build_filename (PACKAGE_PREFIX,
"pixmaps/gr.png", NULL);
676 PACKAGE_SQ = g_build_filename (PACKAGE_PREFIX,
"pixmaps/sq.png", NULL);
677 PACKAGE_BD = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bd.png", NULL);
678 PACKAGE_AN = g_build_filename (PACKAGE_PREFIX,
"pixmaps/an.png", NULL);
679 PACKAGE_RI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/ri.png", NULL);
680 PACKAGE_CH = g_build_filename (PACKAGE_PREFIX,
"pixmaps/ch.png", NULL);
681 PACKAGE_SP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/sp.png", NULL);
682 PACKAGE_MS = g_build_filename (PACKAGE_PREFIX,
"pixmaps/ms.png", NULL);
683 PACKAGE_TD = g_build_filename (PACKAGE_PREFIX,
"pixmaps/td.png", NULL);
684 PACKAGE_MOL = g_build_filename (PACKAGE_PREFIX,
"pixmaps/molecule.png", NULL);
685 PACKAGE_OGL = g_build_filename (PACKAGE_PREFIX,
"pixmaps/opengl.png", NULL);
686 PACKAGE_OGLM = g_build_filename (PACKAGE_PREFIX,
"pixmaps/mol.png", NULL);
687 PACKAGE_OGLC = g_build_filename (PACKAGE_PREFIX,
"pixmaps/mol.png", NULL);
688 PACKAGE_PRO = g_build_filename (PACKAGE_PREFIX,
"pixmaps/prop.png", NULL);
689 PACKAGE_SET = g_build_filename (PACKAGE_PREFIX,
"pixmaps/settings.png", NULL);
690 PACKAGE_LOGO = g_build_filename (PACKAGE_PREFIX,
"pixmaps/logo.png", NULL);
691 PACKAGE_LAGPL = g_build_filename (PACKAGE_PREFIX,
"pixmaps/logo-agpl.png", NULL);
692 PACKAGE_LABOUT = g_build_filename (PACKAGE_PREFIX,
"pixmaps/logo-about.png", NULL);
693 PACKAGE_DOTA = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-a.png", NULL);
694 PACKAGE_DOTB = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-b.png", NULL);
695 PACKAGE_DOTC = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-c.png", NULL);
696 PACKAGE_DOTD = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-d.png", NULL);
697 PACKAGE_DOTE = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-e.png", NULL);
698 PACKAGE_DOTF = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-f.png", NULL);
699 PACKAGE_DOTG = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-g.png", NULL);
700 PACKAGE_DOTH = g_build_filename (PACKAGE_PREFIX,
"pixmaps/dots/dots-h.png", NULL);
701 PACKAGE_DFBD = g_build_filename (PACKAGE_PREFIX,
"pixmaps/field/bd.png", NULL);
702 PACKAGE_DFAN = g_build_filename (PACKAGE_PREFIX,
"pixmaps/field/an.png", NULL);
703 PACKAGE_DFDI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/field/di.png", NULL);
704 PACKAGE_DFTD = g_build_filename (PACKAGE_PREFIX,
"pixmaps/field/td.png", NULL);
705 PACKAGE_DFIN = g_build_filename (PACKAGE_PREFIX,
"pixmaps/field/in.png", NULL);
706 PACKAGE_SGCP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Cubic-P.png", NULL);
707 PACKAGE_SGCI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Cubic-I.png", NULL);
708 PACKAGE_SGCF = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Cubic-F.png", NULL);
709 PACKAGE_SGHP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Hexagonal.png", NULL);
710 PACKAGE_SGTR = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Trigonal-R.png", NULL);
711 PACKAGE_SGTI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Tetragonal-I.png", NULL);
712 PACKAGE_SGTP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Tetragonal-P.png", NULL);
713 PACKAGE_SGOP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Orthorhombic-P.png", NULL);
714 PACKAGE_SGOI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Orthorhombic-I.png", NULL);
715 PACKAGE_SGOC = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Orthorhombic-C.png", NULL);
716 PACKAGE_SGOF = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Orthorhombic-F.png", NULL);
717 PACKAGE_SGMP = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Monoclinic-P.png", NULL);
718 PACKAGE_SGMI = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Monoclinic-I.png", NULL);
719 PACKAGE_SGTC = g_build_filename (PACKAGE_PREFIX,
"pixmaps/bravais/Triclinic.png", NULL);
728 if (g_strcmp0 (argv[1],
"-h") == 0 || g_strcmp0 (argv[1],
"--help") == 0)
733 else if (g_strcmp0 (argv[1],
"-v") == 0 || g_strcmp0 (argv[1],
"--version") == 0)
745 flist -> file_name = g_strdup_printf (
"%s", argv[1]);
746 flist -> file_type = -i;
754 for (j=1; j<argc; j++)
759 if (k > 0 && j < argc-1)
768 ftmp -> next = g_malloc0(
sizeof*
ftmp -> next);
771 ftmp -> file_name = g_strdup_printf (
"%s", argv[j+1]);
772 ftmp -> file_type = k;
784 ftmp -> next = g_malloc0(
sizeof*
ftmp -> next);
787 ftmp -> file_name = g_strdup_printf (
"%s", argv[j]);
788 ftmp -> file_type = -k;
811 g_setenv (
"GSK_RENDERER",
"gl", TRUE);
812 g_setenv (
"GDK_DEBUG",
"gl-prefer-gl", TRUE);
817 g_setenv (
"GDK_RENDERER",
"ngl", TRUE);
827 g_setenv (
"GSK_RENDERER",
"gl", TRUE);
832 PWSTR localPath = NULL;
833 HRESULT hr = SHGetKnownFolderPath (& FOLDERID_LocalAppData, 0, NULL, & localPath);
836 fprintf (stderr,
"Error impossible to obtain the AppData\\Roaming (code 0x%08lx)\n%s", hr);
842 char appdata[MAX_PATH];
843 wcstombs (appdata, localPath, MAX_PATH);
844 CoTaskMemFree (localPath);
850 struct passwd * pw = getpwuid(getuid());
856 gtk_disable_setlocale ();
857#if GLIB_MINOR_VERSION < 74
858 AtomesApp = gtk_application_new (g_strdup_printf (
"fr.ipcms.atomes.prog-%d", (
int)clock()), G_APPLICATION_FLAGS_NONE);
860 AtomesApp = gtk_application_new (g_strdup_printf (
"fr.ipcms.atomes.prog-%d", (
int)clock()), G_APPLICATION_DEFAULT_FLAGS);
862 GError * error = NULL;
863 g_application_register (G_APPLICATION(
AtomesApp), NULL, & error);
int main(int argc, char *argv[])
initialization of the atomes program
int check_opengl_rendering()
check the initialization parameters for an OpenGL context
int test_this_arg(gchar *arg)
test an argument from the command line
void printversion()
print version information
GtkWidget * create_splash_window()
create splash screen window
GtkWidget * create_main_window(GApplication *app)
create the main application window
gboolean destroy_func(gpointer user_data)
destroy splash screen
G_MODULE_EXPORT void run_program(GApplication *app, gpointer data)
run the program
void open_this_data_file(int file_type, gchar *file_name)
open data file from the command line
void read_this_file(int file_type, gchar *this_file)
read file from the command line