Blame src/terminal-screen.h

Packit d370c2
/*
Packit d370c2
 * Copyright © 2001 Havoc Pennington
Packit d370c2
 * Copyright © 2008, 2010 Christian Persch
Packit d370c2
 *
Packit d370c2
 * This program is free software: you can redistribute it and/or modify
Packit d370c2
 * it under the terms of the GNU General Public License as published by
Packit d370c2
 * the Free Software Foundation, either version 3 of the License, or
Packit d370c2
 * (at your option) any later version.
Packit d370c2
 *
Packit d370c2
 * This program is distributed in the hope that it will be useful,
Packit d370c2
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit d370c2
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit d370c2
 * GNU General Public License for more details.
Packit d370c2
 *
Packit d370c2
 * You should have received a copy of the GNU General Public License
Packit d370c2
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit d370c2
 */
Packit d370c2
Packit d370c2
#ifndef TERMINAL_SCREEN_H
Packit d370c2
#define TERMINAL_SCREEN_H
Packit d370c2
Packit d370c2
#include <glib-object.h>
Packit d370c2
#include <gio/gio.h>
Packit d370c2
Packit d370c2
#include <vte/vte.h>
Packit d370c2
Packit d370c2
G_BEGIN_DECLS
Packit d370c2
Packit d370c2
typedef enum {
Packit d370c2
  FLAVOR_AS_IS,
Packit d370c2
  FLAVOR_DEFAULT_TO_HTTP,
Packit d370c2
  FLAVOR_VOIP_CALL,
Packit d370c2
  FLAVOR_EMAIL,
Packit d370c2
  FLAVOR_NUMBER,
Packit d370c2
} TerminalURLFlavor;
Packit d370c2
Packit d370c2
/* Forward decls */
Packit d370c2
typedef struct _TerminalScreenPopupInfo TerminalScreenPopupInfo;
Packit d370c2
typedef struct _TerminalWindow        TerminalWindow;
Packit d370c2
Packit d370c2
#define TERMINAL_TYPE_SCREEN              (terminal_screen_get_type ())
Packit d370c2
#define TERMINAL_SCREEN(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), TERMINAL_TYPE_SCREEN, TerminalScreen))
Packit d370c2
#define TERMINAL_SCREEN_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), TERMINAL_TYPE_SCREEN, TerminalScreenClass))
Packit d370c2
#define TERMINAL_IS_SCREEN(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), TERMINAL_TYPE_SCREEN))
Packit d370c2
#define TERMINAL_IS_SCREEN_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), TERMINAL_TYPE_SCREEN))
Packit d370c2
#define TERMINAL_SCREEN_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), TERMINAL_TYPE_SCREEN, TerminalScreenClass))
Packit d370c2
Packit d370c2
typedef struct _TerminalScreen        TerminalScreen;
Packit d370c2
typedef struct _TerminalScreenClass   TerminalScreenClass;
Packit d370c2
typedef struct _TerminalScreenPrivate TerminalScreenPrivate;
Packit d370c2
Packit d370c2
struct _TerminalScreen
Packit d370c2
{
Packit d370c2
  VteTerminal parent_instance;
Packit d370c2
Packit d370c2
  TerminalScreenPrivate *priv;
Packit d370c2
};
Packit d370c2
Packit d370c2
struct _TerminalScreenClass
Packit d370c2
{
Packit d370c2
  VteTerminalClass parent_class;
Packit d370c2
Packit d370c2
  void (* profile_set)        (TerminalScreen *screen,
Packit d370c2
                               GSettings *old_profile);
Packit d370c2
  void (* show_popup_menu)    (TerminalScreen *screen,
Packit d370c2
                               TerminalScreenPopupInfo *info);
Packit d370c2
  gboolean (* match_clicked)  (TerminalScreen *screen,
Packit d370c2
                               const char *url,
Packit d370c2
                               int flavor,
Packit d370c2
                               guint state);
Packit d370c2
  void (* close_screen)       (TerminalScreen *screen);
Packit d370c2
};
Packit d370c2
Packit d370c2
GType terminal_screen_get_type (void) G_GNUC_CONST;
Packit d370c2
Packit d370c2
const char *terminal_screen_get_uuid (TerminalScreen *screen);
Packit d370c2
Packit d370c2
TerminalScreen *terminal_screen_new (GSettings       *profile,
Packit d370c2
                                     const char      *charset,
Packit d370c2
                                     char           **override_command,
Packit d370c2
                                     const char      *title,
Packit d370c2
                                     const char      *working_dir,
Packit d370c2
                                     char           **child_env,
Packit d370c2
                                     double           zoom);
Packit d370c2
Packit d370c2
gboolean terminal_screen_exec (TerminalScreen *screen,
Packit d370c2
                               char          **argv,
Packit d370c2
                               char          **envv,
Packit d370c2
                               gboolean        shell,
Packit d370c2
                               const char     *cwd,
Packit d370c2
                               GUnixFDList    *fd_list,
Packit d370c2
                               GVariant       *fd_array,
Packit d370c2
                               GError        **error);
Packit d370c2
Packit d370c2
void _terminal_screen_launch_child_on_idle (TerminalScreen *screen);
Packit d370c2
Packit d370c2
void terminal_screen_set_profile (TerminalScreen *screen,
Packit d370c2
                                  GSettings      *profile);
Packit d370c2
GSettings* terminal_screen_get_profile (TerminalScreen *screen);
Packit d370c2
GSettings* terminal_screen_ref_profile (TerminalScreen *screen);
Packit d370c2
Packit d370c2
void         terminal_screen_set_initial_environment (TerminalScreen  *screen,
Packit d370c2
                                                      char           **argv);
Packit d370c2
char **      terminal_screen_get_initial_environment (TerminalScreen  *screen);
Packit d370c2
Packit d370c2
const char* terminal_screen_get_title          (TerminalScreen *screen);
Packit d370c2
const char* terminal_screen_get_icon_title     (TerminalScreen *screen);
Packit d370c2
gboolean    terminal_screen_get_icon_title_set (TerminalScreen *screen);
Packit d370c2
Packit d370c2
char *terminal_screen_get_current_dir (TerminalScreen *screen);
Packit d370c2
Packit d370c2
void       terminal_screen_get_size (TerminalScreen *screen,
Packit d370c2
                                     int *width_chars,
Packit d370c2
                                     int *height_chars);
Packit d370c2
void       terminal_screen_get_cell_size (TerminalScreen *screen,
Packit d370c2
                                          int *width_chars,
Packit d370c2
                                          int *height_chars);
Packit d370c2
Packit d370c2
void _terminal_screen_update_scrollbar (TerminalScreen *screen);
Packit d370c2
Packit d370c2
void terminal_screen_save_config (TerminalScreen *screen,
Packit d370c2
                                  GKeyFile *key_file,
Packit d370c2
                                  const char *group);
Packit d370c2
Packit d370c2
gboolean terminal_screen_has_foreground_process (TerminalScreen *screen,
Packit d370c2
                                                 char           **process_name,
Packit d370c2
                                                 char           **cmdline);
Packit d370c2
Packit d370c2
/* Allow scales a bit smaller and a bit larger than the usual pango ranges */
Packit d370c2
#define TERMINAL_SCALE_XXX_SMALL   (PANGO_SCALE_XX_SMALL/1.2)
Packit d370c2
#define TERMINAL_SCALE_XXXX_SMALL  (TERMINAL_SCALE_XXX_SMALL/1.2)
Packit d370c2
#define TERMINAL_SCALE_XXXXX_SMALL (TERMINAL_SCALE_XXXX_SMALL/1.2)
Packit d370c2
#define TERMINAL_SCALE_XXX_LARGE   (PANGO_SCALE_XX_LARGE*1.2)
Packit d370c2
#define TERMINAL_SCALE_XXXX_LARGE  (TERMINAL_SCALE_XXX_LARGE*1.2)
Packit d370c2
#define TERMINAL_SCALE_XXXXX_LARGE (TERMINAL_SCALE_XXXX_LARGE*1.2)
Packit d370c2
#define TERMINAL_SCALE_MINIMUM     (TERMINAL_SCALE_XXXXX_SMALL/1.2)
Packit d370c2
#define TERMINAL_SCALE_MAXIMUM     (TERMINAL_SCALE_XXXXX_LARGE*1.2)
Packit d370c2
Packit d370c2
struct _TerminalScreenPopupInfo {
Packit d370c2
  int ref_count;
Packit d370c2
  char *url;
Packit d370c2
  TerminalURLFlavor url_flavor;
Packit d370c2
  char *hyperlink;
Packit d370c2
  char *number_info;
Packit d370c2
  guint button;
Packit d370c2
  guint state;
Packit d370c2
  guint32 timestamp;
Packit d370c2
};
Packit d370c2
Packit d370c2
TerminalScreenPopupInfo *terminal_screen_popup_info_ref (TerminalScreenPopupInfo *info);
Packit d370c2
Packit d370c2
void terminal_screen_popup_info_unref (TerminalScreenPopupInfo *info);
Packit d370c2
Packit d370c2
G_END_DECLS
Packit d370c2
Packit d370c2
#endif /* TERMINAL_SCREEN_H */