appkit  1.5.1
RoadNarrows Robotics Application Kit
WinGtkMsg.cxx File Reference

GTK dialog and status windowing functions. More...

#include <sys/types.h>
#include <stdarg.h>
#include <libgen.h>
#include <stdlib.h>
#include <unistd.h>
#include <cstring>
#include <iostream>
#include <fstream>
#include <cmath>
#include "rnr/rnrconfig.h"
#include "rnr/log.h"
#include "opencv2/core/core.hpp"
#include "opencv/highgui/highgui.hpp"
#include <gtk/gtk.h>
#include "rnr/appkit/Win.h"

Go to the source code of this file.

Functions

static gboolean SBTimerAlarm (gpointer user_data)
 
static void SBTimerStart (uint_t uMSec)
 Start the Status Bar timer. More...
 
static void SBTimerStop ()
 Stop the Status Bar timer.
 
void SBFrameEvent (GtkWindow *window, GdkEvent *event, gpointer data)
 Capture frame event for status bar. More...
 
gboolean SBOnWindowState (GtkWidget *w, GdkEventKey *event, gpointer *user_data)
 Window state change event handler. More...
 
static void CreateStatusBar (rnrWindow *pWin)
 Create status bar. More...
 

Variables

static GtkWidget * SBWidget = NULL
 status bar gtk widget
 
static bool SBIsVisible = false
 status bar is [not] visible
 
static GtkWindow * SBWindow = NULL
 status bar gtk window
 
static GtkWidget * SBLabelWidget = NULL
 status bar label gtk widget
 
static CvRect SBWinGeom = {0, }
 status bar window geometry
 
guint SBTimerId = 0
 statue bar timer
 

Detailed Description

GTK dialog and status windowing functions.

LastChangedDate
2013-05-03 07:45:13 -0600 (Fri, 03 May 2013)
Rev
2904
Author
Robin Knight (robin.nosp@m..kni.nosp@m.ght@r.nosp@m.oadn.nosp@m.arrow.nosp@m.s.co.nosp@m.m)
Daniel Packard (danie.nosp@m.l@ro.nosp@m.adnar.nosp@m.rows.nosp@m..com)
Copyright
© 2011-2017. RoadNarrows LLC.
http://www.roadnarrows.com
All Rights Reserved

Definition in file WinGtkMsg.cxx.

Function Documentation

static void CreateStatusBar ( rnrWindow *  pWin)
static

Create status bar.

Parameters
pWinApplication window.

Definition at line 281 of file WinGtkMsg.cxx.

References SBIsVisible, SBLabelWidget, SBOnWindowState(), SBTimerId, SBTimerStart(), SBTimerStop(), SBWidget, SBWindow, and SBWinGeom.

282 {
283  static int h_status = 20; // status window height
284 
285  GtkWindow *wWindow; // gtk window
286  GdkColor color; // background color
287  int x_root; // parent screen x position
288  int y_root; // parent screen y position
289  int w_root; // parent width
290  int h_root; // parent height
291 
292  // get parent position and size
293  wWindow = pWin->GetMainWindowWidget();
294  gtk_window_get_position(wWindow, &x_root, &y_root);
295  gtk_window_get_size(wWindow, &w_root, &h_root);
296 
297  // background color
298  gdk_color_parse("#ffffcf", &color);
299 
300  // status bar window
301  SBWidget = gtk_window_new(GTK_WINDOW_POPUP);
302  SBWindow = GTK_WINDOW(SBWidget);
303  SBWinGeom.x = x_root;
304  SBWinGeom.y = y_root + h_root - h_status;
305  SBWinGeom.width = w_root;
306  SBWinGeom.height = h_status;
307 
308  gtk_window_set_keep_above(SBWindow, true);
309  gtk_window_resize(SBWindow, SBWinGeom.width, SBWinGeom.height);
310  gtk_window_move(SBWindow, SBWinGeom.x, SBWinGeom.y);
311  //gtk_window_set_resizable(SBWindow, false); // cannot use
312  gtk_window_set_decorated(SBWindow, false);
313  gtk_widget_modify_bg(SBWidget, GTK_STATE_NORMAL, &color);
314  gtk_widget_modify_base(SBWidget, GTK_STATE_NORMAL, &color);
315 
316  // status bar label widget
317  SBLabelWidget = gtk_label_new(NULL);
318  gtk_container_add(GTK_CONTAINER(SBWindow), SBLabelWidget);
319 
320  //g_signal_connect(G_OBJECT(SBLabelWidget), "frame-event",
321  // G_CALLBACK(SBFrameEvent), (void *)"frame-event");
322 
323  gtk_signal_connect(GTK_OBJECT(SBWidget), "window-state-event",
324  GTK_SIGNAL_FUNC(SBOnWindowState), NULL);
325 
326  gtk_widget_add_events(SBWidget, GDK_EXPOSURE_MASK |
327  GDK_BUTTON_RELEASE_MASK |
328  GDK_BUTTON_PRESS_MASK |
329  GDK_POINTER_MOTION_MASK);
330 }
static CvRect SBWinGeom
status bar window geometry
Definition: WinGtkMsg.cxx:96
static GtkWidget * SBLabelWidget
status bar label gtk widget
Definition: WinGtkMsg.cxx:95
static GtkWidget * SBWidget
status bar gtk widget
Definition: WinGtkMsg.cxx:92
gboolean SBOnWindowState(GtkWidget *w, GdkEventKey *event, gpointer *user_data)
Window state change event handler.
Definition: WinGtkMsg.cxx:269
static GtkWindow * SBWindow
status bar gtk window
Definition: WinGtkMsg.cxx:94
void SBFrameEvent ( GtkWindow *  window,
GdkEvent *  event,
gpointer  data 
)

Capture frame event for status bar.

Note
Cannot seem to get this to work.
Parameters
windowGTK window.
eventThe event (e.g. mouse click)
dataApplication data.

Definition at line 254 of file WinGtkMsg.cxx.

255 {
256  char *s = (char *)data;
257  //cerr << "dbg: " << event << ", " << s << endl;
258 }
gboolean SBOnWindowState ( GtkWidget *  w,
GdkEventKey *  event,
gpointer *  user_data 
)

Window state change event handler.

Parameters
wWidget where keyboard event occurred.
eventState change event.
user_dataSupplied user data.
Returns
Returns FALSE.

Definition at line 269 of file WinGtkMsg.cxx.

Referenced by CreateStatusBar().

272 {
273  //cerr << "dbg: " << event << endl;
274 }
static void SBTimerStart ( uint_t  uMSec)
static

Start the Status Bar timer.

Parameters
uMSecTimeout in milliseconds.

Definition at line 226 of file WinGtkMsg.cxx.

References SBTimerId.

Referenced by CreateStatusBar().

227 {
228  SBTimerId = g_timeout_add(uMSec, SBTimerAlarm, NULL);
229 }
guint SBTimerId
statue bar timer
Definition: WinGtkMsg.cxx:203