1 /*-
2  * Copyright (c) 2004-2008 os-cillation e.K.
3  *
4  * Written by Benedikt Meurer <benny@xfce.org>.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License as published by the Free
8  * Software Foundation; either version 2 of the License, or (at your option)
9  * any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef TERMINAL_OPTIONS_H
21 #define TERMINAL_OPTIONS_H
22 
23 #include <glib.h>
24 #include <terminal/terminal-preferences.h>
25 
26 G_BEGIN_DECLS
27 
28 typedef enum
29 {
30   TERMINAL_VISIBILITY_DEFAULT,
31   TERMINAL_VISIBILITY_SHOW,
32   TERMINAL_VISIBILITY_HIDE
33 } TerminalVisibility;
34 
35 typedef enum
36 {
37   TERMINAL_ZOOM_LEVEL_MINIMUM     = -7,
38   TERMINAL_ZOOM_LEVEL_XXXXX_SMALL = -6,
39   TERMINAL_ZOOM_LEVEL_XXXX_SMALL  = -5,
40   TERMINAL_ZOOM_LEVEL_XXX_SMALL   = -4,
41   TERMINAL_ZOOM_LEVEL_XX_SMALL    = -3,
42   TERMINAL_ZOOM_LEVEL_X_SMALL     = -2,
43   TERMINAL_ZOOM_LEVEL_SMALL       = -1,
44   TERMINAL_ZOOM_LEVEL_MEDIUM      = 0,
45   TERMINAL_ZOOM_LEVEL_LARGE       = +1,
46   TERMINAL_ZOOM_LEVEL_X_LARGE     = +2,
47   TERMINAL_ZOOM_LEVEL_XX_LARGE    = +3,
48   TERMINAL_ZOOM_LEVEL_XXX_LARGE   = +4,
49   TERMINAL_ZOOM_LEVEL_XXXX_LARGE  = +5,
50   TERMINAL_ZOOM_LEVEL_XXXXX_LARGE = +6,
51   TERMINAL_ZOOM_LEVEL_MAXIMUM     = +7,
52   TERMINAL_ZOOM_LEVEL_DEFAULT     = TERMINAL_ZOOM_LEVEL_MEDIUM
53 } TerminalZoomLevel;
54 
55 typedef struct
56 {
57   gchar         **command;
58   gchar          *directory;
59   gchar          *title;
60   gchar          *initial_title;
61   gchar          *color_text;
62   gchar          *color_bg;
63   gchar          *color_title;
64   TerminalTitle   dynamic_title_mode;
65   gint            position;
66   guint           hold : 1;
67   guint           active : 1;
68 } TerminalTabAttr;
69 
70 typedef struct
71 {
72   GSList             *tabs;
73   gchar              *display;
74   gchar              *geometry;
75   gchar              *role;
76   gchar              *startup_id;
77   gchar              *sm_client_id;
78   gchar              *icon;
79   gchar              *font;
80   guint               drop_down : 1;
81   guint               fullscreen : 1;
82   guint               maximize : 1;
83   guint               minimize : 1;
84   guint               reuse_last_window : 1;
85   TerminalVisibility  menubar;
86   TerminalVisibility  borders;
87   TerminalVisibility  toolbar;
88   TerminalVisibility  scrollbar;
89   TerminalZoomLevel   zoom;
90 } TerminalWindowAttr;
91 
92 typedef struct
93 {
94   guint show_help : 1;
95   guint show_version : 1;
96   guint show_colors : 1;
97   guint show_preferences : 1;
98   guint disable_server : 1;
99 } TerminalOptions;
100 
101 void                terminal_options_parse     (gint                 argc,
102                                                 gchar              **argv,
103                                                 TerminalOptions     *options);
104 
105 GSList             *terminal_window_attr_parse (gint                 argc,
106                                                 gchar              **argv,
107                                                 gboolean             can_reuse_tab,
108                                                 GError             **error);
109 
110 TerminalWindowAttr *terminal_window_attr_new   (void);
111 
112 TerminalTabAttr    *terminal_tab_attr_new      (void);
113 
114 void                terminal_tab_attr_free     (TerminalTabAttr     *attr);
115 
116 void                terminal_window_attr_free  (TerminalWindowAttr  *attr);
117 
118 G_END_DECLS
119 
120 #endif /* !TERMINAL_OPTIONS_H */
121