~ubuntu-branches/ubuntu/raring/gapcmon/raring

« back to all changes in this revision

Viewing changes to src/gapcmon.c

  • Committer: Bazaar Package Importer
  • Author(s): Mario Iseli
  • Date: 2007-11-20 15:40:04 UTC
  • mfrom: (1.1.2 upstream) (2.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20071120154004-ox9w31vzpid9cfbg
Tags: 0.8.6-1
* New upstream release.
* New maintainer E-Mail address.
* Added official Homepage field to debian/control.
* Updated menu file to new sections.
* Removed useless whitespace in debian/rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
168
168
/* 
169
169
 * Some small number of globals are required
170
170
*/
171
 
static gboolean lg_graph_debug = FALSE;
 
171
static gboolean lg_graph_debug = TRUE;
172
172
 
173
173
 
174
174
/* ************************************************************************* */
1800
1800
 */
1801
1801
static gboolean gapc_monitor_update_tooltip_msg(PGAPC_MONITOR pm)
1802
1802
{
1803
 
   gchar *pchx = NULL, *pmsg = NULL, *ptitle = NULL, *pch5 = NULL, *pch5a =
1804
 
      NULL, *pch5b = NULL;
 
1803
   gchar *pchx = NULL, *pmsg = NULL, *ptitle = NULL, *pch5 = NULL; 
 
1804
   gchar *pch5a = NULL, *pch5b = NULL;
1805
1805
   gchar *pch1 = NULL, *pch2 = NULL, *pch3 = NULL, *pch4 = NULL;
1806
1806
   gchar *pch6 = NULL, *pch7 = NULL, *pch8 = NULL, *pch9 = NULL;
1807
1807
   gchar *pchb = NULL, *pchc = NULL, *pchd = NULL, *pche = NULL;
1808
 
   gchar *pcha = NULL, *pmview = NULL;
 
1808
   gchar *pcha = NULL, *pmview = NULL, *pchw = NULL;
1809
1809
   GtkWidget *w = NULL;
1810
 
   gdouble d_value = 0.0;
 
1810
   gdouble d_value = 0.0, d_loadpct = 0.0, d_watt = 0.0;
1811
1811
   gboolean b_flag = FALSE, b_valid = FALSE;
1812
1812
   gint i_series = 0;
1813
1813
   GtkTreeIter miter;
1853
1853
      pch7 = "n/a";
1854
1854
   }
1855
1855
   pch8 = g_hash_table_lookup(pm->pht_Status, "LOADPCT");
 
1856
   if (pch8 != NULL) {
 
1857
       d_loadpct = g_strtod (pch8, NULL);
 
1858
       d_loadpct /= 100.0;
 
1859
   }
 
1860
   pchw = g_hash_table_lookup(pm->pht_Status, "NOMPOWER");
 
1861
   if (pchw == NULL) {
 
1862
       d_watt = d_loadpct * pm->i_watt;        
 
1863
   } else {
 
1864
       d_watt = g_strtod (pchw, NULL);        
 
1865
   }
1856
1866
   pch9 = g_hash_table_lookup(pm->pht_Status, "TIMELEFT");
1857
1867
   pcha = g_hash_table_lookup(pm->pht_Status, "VERSION");
1858
1868
   pchb = g_hash_table_lookup(pm->pht_Status, "STARTTIME");
1903
1913
   pmsg = g_strdup_printf("%s@%s\nStatus: %s%s\n"
1904
1914
      "Refresh occurs every %3.1f seconds\n"
1905
1915
      "----------------------------------------------------------\n"
1906
 
      "%s Outage[s]\n" "Last on %s\n" "%s Utility VAC\n"
1907
 
      "%s Battery Charge\n" "%s UPS Load\n" "%s Remaining\n"
1908
 
      "----------------------------------------------------------\n"
1909
 
      "Build: %s\n" "Started: %s\n"
1910
 
      "----------------------------------------------------------\n"
1911
 
      "Model: %s\n" " Mode: %s\n" "Cable: %s",
 
1916
      "%s Outage[s]\n" 
 
1917
      "Last on %s\n" 
 
1918
      "%s Utility VAC\n"
 
1919
      "%s Battery Charge\n" 
 
1920
      "%s UPS Load\n"
 
1921
      "%3.1f of %d watts\n" 
 
1922
      "%s Remaining\n"
 
1923
      "----------------------------------------------------------\n"
 
1924
      "Build: %s\n" 
 
1925
      "Started: %s\n"
 
1926
      "----------------------------------------------------------\n"
 
1927
      "Model: %s\n" 
 
1928
      " Mode: %s\n" 
 
1929
      "Cable: %s",
1912
1930
      (pch1 != NULL) ? pch1 : "unknown",
1913
1931
      (pch2 != NULL) ? pch2 : "unknown",
1914
1932
      (pch3 != NULL) ? pch3 : "n/a",
1918
1936
      (pch5 != NULL) ? pch5 : "n/a",
1919
1937
      (pch6 != NULL) ? pch6 : "n/a",
1920
1938
      (pch7 != NULL) ? pch7 : "n/a",
1921
 
      (pch8 != NULL) ? pch8 : "n/a",
 
1939
      (pch8 != NULL) ? pch8 : "n/a", 
 
1940
      d_watt, pm->i_watt,
1922
1941
      (pch9 != NULL) ? pch9 : "n/a",
1923
1942
      (pcha != NULL) ? pcha : "n/a",
1924
1943
      (pchb != NULL) ? pchb : "n/a",
1944
1963
      pmview = g_strdup_printf("<span foreground=\"blue\">"
1945
1964
         "<b><i>%s@%s</i></b></span>\n"
1946
1965
         "%s Outage, Last on %s\n"
1947
 
         "%s VAC, %s Charge\n"
 
1966
         "%s VAC, %s Charge, %3.1f of %d watts\n"
1948
1967
         "%s Remaining, %s total on battery",
1949
1968
         (pch1 != NULL) ? pch1 : "unknown",
1950
1969
         (pch2 != NULL) ? pch2 : "unknown",
1951
1970
         (pch4 != NULL) ? pch4 : "n/a",
1952
1971
         (pch5 != NULL) ? pch5 : "n/a",
1953
1972
         (pch6 != NULL) ? pch6 : "n/a",
1954
 
         (pch7 != NULL) ? pch7 : "n/a",
 
1973
         (pch7 != NULL) ? pch7 : "n/a", d_watt, pm->i_watt,
1955
1974
         (pch9 != NULL) ? pch9 : "n/a", (pch5b != NULL) ? pch5b : "n/a");
1956
1975
      break;
1957
1976
   case GAPC_ICON_ONBATT:
1959
1978
         "<b><i>%s@%s</i></b></span>\n"
1960
1979
         "%s Outage, Last on %s\n"
1961
1980
         "%s Charge, %s total on battery\n"
1962
 
         "%s Remaining, %s on battery",
 
1981
         "%s Remaining, %s on battery\n"
 
1982
         "%3.1f of %d watts",
1963
1983
         (pch1 != NULL) ? pch1 : "unknown",
1964
1984
         (pch2 != NULL) ? pch2 : "unknown",
1965
1985
         (pch4 != NULL) ? pch4 : "n/a",
1966
1986
         (pch5 != NULL) ? pch5 : "n/a",
1967
 
         (pch7 != NULL) ? pch7 : "n/a",
 
1987
         (pch7 != NULL) ? pch7 : "n/a", 
1968
1988
         (pch5b != NULL) ? pch5b : "n/a",
1969
 
         (pch9 != NULL) ? pch9 : "n/a", (pch5a != NULL) ? pch5a : "n/a ");
 
1989
         (pch9 != NULL) ? pch9 : "n/a", 
 
1990
         (pch5a != NULL) ? pch5a : "n/a ",
 
1991
         d_watt, pm->i_watt);
1970
1992
      break;
1971
1993
   case GAPC_ICON_ONLINE:
1972
1994
   case GAPC_ICON_DEFAULT:
1973
1995
   default:
1974
1996
      pmview = g_strdup_printf("<b><i>%s@%s</i></b>\n"
1975
1997
         "%s Outage, Last on %s\n"
1976
 
         "%s VAC, %s Charge %s",
 
1998
         "%s VAC, %s Charge %s, %3.0f of %d watts",
1977
1999
         (pch1 != NULL) ? pch1 : "unknown",
1978
2000
         (pch2 != NULL) ? pch2 : "unknown",
1979
2001
         (pch4 != NULL) ? pch4 : "n/a",
1980
2002
         (pch5 != NULL) ? pch5 : "n/a",
1981
2003
         (pch6 != NULL) ? pch6 : "n/a",
1982
 
         (pch7 != NULL) ? pch7 : "n/a", (pchx != NULL) ? pchx : " ");
 
2004
         (pch7 != NULL) ? pch7 : "n/a", 
 
2005
         (pchx != NULL) ? pchx : " ",
 
2006
         d_watt, pm->i_watt);
1983
2007
      break;
1984
2008
   }
1985
2009
 
2037
2061
   GtkWidget *win = NULL, *w = NULL;
2038
2062
   gchar *pch = NULL, *pch1 = NULL, *pch2 = NULL, *pch3 = NULL, *pch4 =
2039
2063
      NULL, *pch5 = NULL, *pch6 = NULL;
2040
 
   gdouble dValue = 0.00, dScale = 0.0, dtmp = 0.0, dCharge = 0.0;
 
2064
   gdouble dValue = 0.00, dScale = 0.0, dtmp = 0.0, dCharge = 0.0, d_loadpct = 0.0;
2041
2065
   gchar ch_buffer[GAPC_MAX_TEXT];
2042
2066
   PGAPC_BAR_H pbar = NULL;
2043
2067
 
2125
2149
   }
2126
2150
   dValue = g_strtod(pch, NULL);
2127
2151
   dtmp = dValue /= 100.0;
 
2152
   d_loadpct = dtmp;
2128
2153
   gapc_util_point_filter_set(&(pm->phs.sq[1]), dValue);
2129
2154
   pbar = g_hash_table_lookup(pm->pht_Status, "HBar4");
2130
2155
   pbar->d_value = (dValue > 1.0) ? 1.0 : dValue;
2157
2182
   pch2 = g_hash_table_lookup(pm->pht_Status, "CABLE");
2158
2183
   pch3 = g_hash_table_lookup(pm->pht_Status, "UPSMODE");
2159
2184
   pch4 = g_hash_table_lookup(pm->pht_Status, "STARTTIME");
2160
 
   pch5 = g_hash_table_lookup(pm->pht_Status, "STATUS");
 
2185
   pch5 = g_hash_table_lookup(pm->pht_Status, "STATUS");   
2161
2186
   g_snprintf(ch_buffer, sizeof(ch_buffer),
2162
2187
      "<span foreground=\"blue\">" "%s\n%s\n%s\n%s\n%s\n%s" "</span>",
2163
2188
      (pch != NULL) ? pch : "N/A", (pch1 != NULL) ? pch1 : "N/A",
2187
2212
   pch2 = g_hash_table_lookup(pm->pht_Status, "MANDATE");
2188
2213
   pch3 = g_hash_table_lookup(pm->pht_Status, "FIRMWARE");
2189
2214
   pch4 = g_hash_table_lookup(pm->pht_Status, "BATTDATE");
 
2215
   pch6 = g_hash_table_lookup(pm->pht_Status, "NOMPOWER");
 
2216
   if (pch6 == NULL) {
 
2217
       dValue = pm->i_watt * d_loadpct; 
 
2218
   } else {
 
2219
       dValue =  g_strtod (pch6, NULL);
 
2220
   }
2190
2221
   g_snprintf(ch_buffer, sizeof(ch_buffer),
2191
 
      "<span foreground=\"blue\">" "%s\n%s\n%s\n%s\n%s" "</span>",
 
2222
      "<span foreground=\"blue\">" "%s\n%s\n%s\n%s\n%s\n%3.1f of %d" "</span>",
2192
2223
      (pch != NULL) ? pch : "N/A", (pch1 != NULL) ? pch1 : "N/A",
2193
2224
      (pch2 != NULL) ? pch2 : "N/A", (pch3 != NULL) ? pch3 : "N/A",
2194
 
      (pch4 != NULL) ? pch4 : "N/A");
 
2225
      (pch4 != NULL) ? pch4 : "N/A", dValue, pm->i_watt);
2195
2226
   gtk_label_set_markup(GTK_LABEL(win), ch_buffer);
2196
2227
 
2197
2228
   return TRUE;
2198
2229
}
 
2230
 
2199
2231
/*  sknet_util_log_msg()
2200
2232
 *  capture the current application related error values
2201
2233
 *  output the composed str only if debug_flag is on
2219
2251
  gssize nleft = 0;
2220
2252
  gsize nwritten = 0;
2221
2253
  GError *gerror = NULL;
2222
 
  GIOStatus iox = 0;
2223
 
  gint ecount = 0;
 
2254
  GIOStatus ios = 0;
 
2255
  gboolean b_eof = TRUE;
2224
2256
 
2225
2257
  nleft = nbytes;
2226
 
  while (nleft > 0)
 
2258
 
 
2259
  do
2227
2260
  {
2228
 
    if (++ecount > 3)
2229
 
    {
2230
 
      return -1;
2231
 
    }
2232
 
    
2233
 
    iox = g_io_channel_write_chars (ioc, ptr, nleft, &nwritten, &gerror);
2234
 
    if (gerror != NULL)
2235
 
    {
2236
 
      sknet_util_log_msg ("sknet_net_write_nbytes", "error", gerror->message);
 
2261
    b_eof = FALSE;
 
2262
    ios = g_io_channel_write_chars (ioc, ptr, nleft, &nwritten, &gerror);
 
2263
    switch (ios)
 
2264
    {
 
2265
    case G_IO_STATUS_ERROR:
 
2266
      sknet_util_log_msg ("sknet_net_write_nbytes", "G_IO_STATUS_ERROR", gerror->message);
2237
2267
      g_error_free (gerror);
2238
2268
      return -1;
2239
 
    }
2240
 
 
2241
 
    if (iox == G_IO_STATUS_AGAIN)
2242
 
    {
2243
 
      sknet_util_log_msg ("sknet_net_write_nbytes", "status again", "failing");
2244
 
      g_usleep (1000000);
2245
 
    }
2246
 
 
 
2269
      break;
 
2270
    case G_IO_STATUS_AGAIN:
 
2271
      sknet_util_log_msg ("sknet_net_write_nbytes", "G_IO_STATUS_AGAIN", "aborted");
 
2272
      g_usleep (500000);
 
2273
      break;
 
2274
    case G_IO_STATUS_EOF:
 
2275
      sknet_util_log_msg ("sknet_net_write_nbytes", "G_IO_STATUS_EOF", "ok");
 
2276
      return 0;
 
2277
      break;
 
2278
    case G_IO_STATUS_NORMAL:
 
2279
      break;
 
2280
    default:
 
2281
      sknet_util_log_msg ("sknet_net_write_nbytes", "unknown state", "aborted");
 
2282
      b_eof = TRUE;
 
2283
      return 0;
 
2284
      break;
 
2285
    }
2247
2286
    nleft -= nwritten;
2248
2287
    ptr += nwritten;
2249
 
  }   /* end-while */
 
2288
  }
 
2289
  while ((nleft > 0) && (b_eof != TRUE));
2250
2290
 
2251
2291
  return (nbytes - nleft);
2252
2292
}
2294
2334
  gsize nleft = 0;
2295
2335
  gsize nread = 0;
2296
2336
  GError *gerror = NULL;
2297
 
  GIOStatus iox = 0;
2298
 
  gint ecount = 0;
 
2337
  GIOStatus ios = 0;
 
2338
  gboolean b_eof = FALSE;
2299
2339
 
2300
2340
  nleft = nbytes;
2301
 
  while (nleft > 0)
 
2341
 
 
2342
  do
2302
2343
  {
2303
 
    if (++ecount > 3)
2304
 
    {
2305
 
      return -1;
2306
 
    }
2307
 
    
2308
 
    iox = g_io_channel_read_chars (ioc, ptr, nleft, &nread, &gerror);
2309
 
    if (gerror != NULL)
2310
 
    {
2311
 
      sknet_util_log_msg ("sknet_net_read_nbytes", "read error", gerror->message);
 
2344
    b_eof = FALSE;
 
2345
    ios = g_io_channel_read_chars (ioc, ptr, nleft, &nread, &gerror);
 
2346
    switch (ios)
 
2347
    {
 
2348
    case G_IO_STATUS_ERROR:
 
2349
      sknet_util_log_msg ("sknet_net_read_nbytes", "G_IO_STATUS_ERROR", gerror->message);
2312
2350
      g_error_free (gerror);
2313
2351
      return -1;
2314
 
    }
2315
 
   
2316
 
    if (iox == G_IO_STATUS_EOF)
2317
 
    {
2318
 
        sknet_util_log_msg ("sknet_net_read_nbytes", "status eof", "EOF");
2319
 
        nleft -= nread;
2320
 
        break;
2321
 
    }
2322
 
 
2323
 
    if (iox == G_IO_STATUS_AGAIN)
2324
 
    {
2325
 
      sknet_util_log_msg ("sknet_net_read_nbytes", "status again", "looping");
2326
 
      g_usleep (1000000);
2327
 
    }
2328
 
 
 
2352
      break;
 
2353
    case G_IO_STATUS_AGAIN:
 
2354
      sknet_util_log_msg ("sknet_net_read_nbytes", "G_IO_STATUS_AGAIN", "aborted");
 
2355
      g_usleep (500000);
 
2356
      break;
 
2357
    case G_IO_STATUS_EOF:
 
2358
      sknet_util_log_msg ("sknet_net_read_nbytes", "G_IO_STATUS_EOF", "ok");
 
2359
      return 0;
 
2360
      break;
 
2361
    case G_IO_STATUS_NORMAL:
 
2362
      break;
 
2363
    default:
 
2364
      sknet_util_log_msg ("sknet_net_read_nbytes", "unknown state", "aborted");
 
2365
      b_eof = TRUE;
 
2366
      return 0;
 
2367
      break;
 
2368
    }
2329
2369
    nleft -= nread;
2330
2370
    ptr += nread;
2331
 
  }                             /* end-while */
 
2371
  }
 
2372
  while ((nleft > 0) && (b_eof != TRUE));
2332
2373
 
2333
2374
  return (nbytes - nleft);      /* return >= 0 */
2334
2375
}
2508
2549
  psk->b_network_control = FALSE;
2509
2550
  
2510
2551
  ioc = g_io_channel_unix_new (sockfd);
 
2552
  if (ioc == NULL) {
 
2553
    sknet_util_log_msg ("sknet_net_open", "channel_new() api failed",
 
2554
                      (gchar *) g_strerror (errno));
 
2555
    psk->b_network_control = TRUE;
 
2556
    psk->ioc = NULL;
 
2557
    return NULL;          
 
2558
  }
 
2559
  
2511
2560
  g_io_channel_set_encoding (ioc, NULL, NULL);
2512
2561
  g_io_channel_set_buffered (ioc, FALSE);
2513
2562
  
2551
2600
 
2552
2601
    if (psk->gp_reserved != NULL) {
2553
2602
        ((PSKCOMM)psk->gp_reserved)->cb_id--;    /* decrement count of instances created */
2554
 
    } else {                                     /* or close main socket */
2555
 
            if (psk->fd_server) 
2556
 
            {
 
2603
    } else if (psk->fd_server) /* or close main socket */
 
2604
           {
2557
2605
                close (psk->fd_server);
2558
 
            }
2559
 
    }
 
2606
           }
2560
2607
 
2561
2608
    if (psk->gip != NULL) {
2562
2609
        g_free(psk->gip);
2583
2630
   g_return_val_if_fail(pm->pch_host, -1);
2584
2631
 
2585
2632
 
2586
 
   ioc = sknet_net_open(pm->psk);
 
2633
   do {
 
2634
                ioc = sknet_net_open(pm->psk);
 
2635
                if (ioc != NULL) {
 
2636
                    break;
 
2637
                }
 
2638
                g_usleep (1000000);
 
2639
   } while (n++ < 3);
 
2640
   
2587
2641
   if (ioc == NULL) {
2588
 
      return 0;
 
2642
           return 0;
2589
2643
   }
2590
2644
 
2591
2645
   n = sknet_net_send( ioc, cp_cmd, g_utf8_strlen(cp_cmd, -1));
2786
2840
      "use_systray");
2787
2841
   g_snprintf(pk.k_port_number, GAPC_MAX_TEXT, "%s/%d/%s", pkey, i_monitor,
2788
2842
      "port_number");
 
2843
   g_snprintf(pk.k_watt_number, GAPC_MAX_TEXT, "%s/%d/%s", pkey, i_monitor,
 
2844
      "ups_wattage");
2789
2845
   g_snprintf(pk.k_network_interval, GAPC_MAX_TEXT, "%s/%d/%s", pkey, i_monitor,
2790
2846
      "network_interval");
2791
2847
   g_snprintf(pk.k_graph_interval, GAPC_MAX_TEXT, "%s/%d/%s", pkey, i_monitor,
2797
2853
   gconf_client_set_bool(pcfg->client, pk.k_enabled, FALSE, NULL);
2798
2854
   gconf_client_set_bool(pcfg->client, pk.k_use_systray, FALSE, NULL);
2799
2855
   gconf_client_set_int(pcfg->client, pk.k_port_number, GAPC_PORT_DEFAULT, NULL);
 
2856
   gconf_client_set_int(pcfg->client, pk.k_watt_number, GAPC_WATT_DEFAULT, NULL);
2800
2857
   gconf_client_set_float(pcfg->client, pk.k_network_interval, GAPC_REFRESH_DEFAULT,
2801
2858
      NULL);
2802
2859
   gconf_client_set_float(pcfg->client, pk.k_graph_interval,
3213
3270
         if (b_visible) {
3214
3271
            gtk_window_iconify(GTK_WINDOW(window));
3215
3272
         } else {
3216
 
            gtk_window_present_with_time(GTK_WINDOW(window), event->time);
 
3273
            gtk_window_present(GTK_WINDOW(window));
3217
3274
         }
3218
3275
         break;
3219
3276
      case 2:
3543
3600
         g_free(pport);
3544
3601
      }
3545
3602
      break;
 
3603
   case GAPC_PREFS_WATT: 
 
3604
      {
 
3605
         gchar *pport = g_strdup_printf(GAPC_WATT_KEY, i_monitor);
 
3606
 
 
3607
         i_port = (gint) g_strtod(pch_new, NULL);
 
3608
 
 
3609
         if (i_port == 0) {
 
3610
            i_port = GAPC_WATT_DEFAULT;
 
3611
            pch = g_strdup_printf("%d", i_port);
 
3612
         } else {
 
3613
            pch = pch_new;
 
3614
            b_dupped = TRUE;
 
3615
         }
 
3616
         gconf_client_set_int(pcolumn->client, pport, i_port, NULL);
 
3617
         g_free(pport);
 
3618
      }
 
3619
      break;
3546
3620
   case GAPC_PREFS_REFRESH:
3547
3621
      {
3548
3622
         gchar *prefresh = g_strdup_printf(GAPC_REFRESH_KEY, i_monitor);
3655
3729
   gboolean v_enabled;
3656
3730
   gboolean v_use_systray;
3657
3731
   gint v_port_number;
 
3732
   gint v_watt_number;
3658
3733
   gfloat v_network_interval;
3659
3734
   gfloat v_graph_interval;
3660
3735
   gchar *v_host_name;
3662
3737
   gchar k_enabled[GAPC_MAX_TEXT];
3663
3738
   gchar k_use_systray[GAPC_MAX_TEXT];
3664
3739
   gchar k_port_number[GAPC_MAX_TEXT];
 
3740
   gchar k_watt_number[GAPC_MAX_TEXT];
3665
3741
   gchar k_network_interval[GAPC_MAX_TEXT];
3666
3742
   gchar k_graph_interval[GAPC_MAX_TEXT];
3667
3743
   gchar k_host_name[GAPC_MAX_TEXT];
3716
3792
         "use_systray");
3717
3793
      g_snprintf(k_port_number, GAPC_MAX_TEXT, "%s/%s", (gchar *) monitors->data,
3718
3794
         "port_number");
 
3795
      g_snprintf(k_watt_number, GAPC_MAX_TEXT, "%s/%s", (gchar *) monitors->data,
 
3796
         "ups_wattage");
3719
3797
      g_snprintf(k_network_interval, GAPC_MAX_TEXT, "%s/%s",
3720
3798
         (gchar *) monitors->data, "network_interval");
3721
3799
      g_snprintf(k_graph_interval, GAPC_MAX_TEXT, "%s/%s", (gchar *) monitors->data,
3729
3807
      if (v_port_number == 0) {
3730
3808
         v_port_number = GAPC_PORT_DEFAULT;
3731
3809
      }
 
3810
      v_watt_number = gconf_client_get_int(pcfg->client, k_watt_number, NULL);
 
3811
      if (v_watt_number == 0) {
 
3812
         v_watt_number = GAPC_WATT_DEFAULT;
 
3813
      }
3732
3814
      v_network_interval =
3733
3815
         gconf_client_get_float(pcfg->client, k_network_interval, NULL);
3734
3816
      if (v_network_interval == 0.0) {
3746
3828
 
3747
3829
      gtk_list_store_append(GTK_LIST_STORE(pcfg->prefs_model), &iter);
3748
3830
      gtk_list_store_set(GTK_LIST_STORE(pcfg->prefs_model), &iter,
3749
 
         GAPC_PREFS_MONITOR, i_monitor, GAPC_PREFS_SYSTRAY,
3750
 
         v_use_systray, GAPC_PREFS_ENABLED, v_enabled,
3751
 
         GAPC_PREFS_PORT,
3752
 
         v_port_number, GAPC_PREFS_REFRESH, v_network_interval,
3753
 
         GAPC_PREFS_GRAPH, v_graph_interval, GAPC_PREFS_HOST, v_host_name, -1);
 
3831
         GAPC_PREFS_MONITOR, i_monitor, 
 
3832
         GAPC_PREFS_SYSTRAY, v_use_systray, 
 
3833
         GAPC_PREFS_ENABLED, v_enabled,
 
3834
         GAPC_PREFS_PORT, v_port_number, 
 
3835
         GAPC_PREFS_REFRESH, v_network_interval,
 
3836
         GAPC_PREFS_GRAPH, v_graph_interval, 
 
3837
         GAPC_PREFS_HOST, v_host_name, 
 
3838
         GAPC_PREFS_WATT, v_watt_number,-1);
3754
3839
 
3755
3840
      /* Startup Processing */
3756
3841
      if (v_enabled) {
3779
3864
   GtkTreeModel *model = NULL;
3780
3865
   GtkTreeViewColumn *column = NULL;
3781
3866
   GtkCellRenderer *renderer_enabled = NULL, *renderer_systray = NULL,
3782
 
      *renderer_port = NULL, *renderer_refresh = NULL,
 
3867
      *renderer_port = NULL, *renderer_refresh = NULL, *renderer_watt = NULL,
3783
3868
      *renderer_graph = NULL, *renderer_host = NULL, *anyrndr = NULL;
3784
3869
   PGAPC_PREFS_COLUMN col_enabled = NULL, col_systray = NULL, col_port = NULL,
3785
 
      col_refresh = NULL, col_graph = NULL, col_host = NULL;
 
3870
      col_refresh = NULL, col_graph = NULL, col_host = NULL, col_watt = NULL;
3786
3871
 
3787
3872
   g_return_val_if_fail(pcfg != NULL, NULL);
3788
3873
 
3791
3876
      return GTK_WIDGET(pcfg->prefs_treeview);
3792
3877
 
3793
3878
   /* Create the model -- this column order and that of the enum must match */
3794
 
   model = GTK_TREE_MODEL(gtk_list_store_new(GAPC_N_PREFS_COLUMNS, G_TYPE_INT,  /* Monitor base-1 */
 
3879
   model = GTK_TREE_MODEL(gtk_list_store_new(GAPC_N_PREFS_COLUMNS, 
 
3880
         G_TYPE_INT,  /* Monitor base-1 */
3795
3881
         G_TYPE_BOOLEAN,           /* enabled */
3796
3882
         G_TYPE_BOOLEAN,           /* systray icon */
3797
3883
         G_TYPE_INT,               /* Port  */
3798
3884
         G_TYPE_FLOAT,             /* network Refresh */
3799
3885
         G_TYPE_FLOAT,             /* graph Refresh */
3800
 
         G_TYPE_STRING             /* Host  */
 
3886
         G_TYPE_STRING,             /* Host  */
 
3887
         G_TYPE_INT                 /* Wattage of UPS */
3801
3888
      ));
3802
3889
   /* store it for later */
3803
3890
   pcfg->prefs_model = model;
3816
3903
   col_enabled = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_ENABLED);
3817
3904
   col_systray = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_SYSTRAY);
3818
3905
   col_port = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_PORT);
 
3906
   col_watt = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_WATT);
3819
3907
   col_refresh = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_REFRESH);
3820
3908
   col_graph = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_GRAPH);
3821
3909
   col_host = gapc_panel_prefs_col_data_init(pcfg, GAPC_PREFS_HOST);
3824
3912
   renderer_enabled = gtk_cell_renderer_toggle_new();
3825
3913
   renderer_systray = gtk_cell_renderer_toggle_new();
3826
3914
   renderer_port = gtk_cell_renderer_text_new();
 
3915
   renderer_watt = gtk_cell_renderer_text_new();
3827
3916
   renderer_refresh = gtk_cell_renderer_text_new();
3828
3917
   renderer_graph = gtk_cell_renderer_text_new();
3829
3918
   renderer_host = gtk_cell_renderer_text_new();
3831
3920
 
3832
3921
   /* set renderers attributes */
3833
3922
   g_object_set(G_OBJECT(renderer_port), "xalign", 0.5, "editable", TRUE, NULL);
 
3923
   g_object_set(G_OBJECT(renderer_watt), "xalign", 0.5, "editable", TRUE, NULL);
3834
3924
   g_object_set(G_OBJECT(renderer_graph), "xalign", 0.5, "editable", TRUE, NULL);
3835
3925
   g_object_set(G_OBJECT(renderer_refresh), "xalign", 0.5, "editable", TRUE, NULL);
3836
3926
   g_object_set(G_OBJECT(renderer_host), "editable", TRUE, NULL);
3858
3948
   gtk_signal_connect_full(GTK_OBJECT(renderer_host), "edited",
3859
3949
      G_CALLBACK(cb_panel_prefs_handle_cell_edited), NULL,
3860
3950
      col_host, g_free, FALSE, TRUE);
 
3951
   gtk_signal_connect_full(GTK_OBJECT(renderer_watt), "edited",
 
3952
      G_CALLBACK(cb_panel_prefs_handle_cell_edited), NULL,
 
3953
      col_watt, g_free, FALSE, TRUE);
3861
3954
 
3862
3955
   /* Define the column order and attributes */
3863
3956
   column = gtk_tree_view_column_new_with_attributes("Enabled", renderer_enabled,
3887
3980
      cb_panel_prefs_handle_float_format, GUINT_TO_POINTER(GAPC_PREFS_GRAPH), NULL);
3888
3981
   gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
3889
3982
 
 
3983
   column = gtk_tree_view_column_new_with_attributes("UPS\nWattage", renderer_watt, "text",
 
3984
      GAPC_PREFS_WATT, NULL);
 
3985
   gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
3986
 
3890
3987
   column = gtk_tree_view_column_new_with_attributes("Host Name or IP Address",
3891
3988
      renderer_host, "text", GAPC_PREFS_HOST, NULL);
3892
3989
   gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
4644
4741
 
4645
4742
 
4646
4743
   gint i_monitor = 0;
4647
 
   gint i_value = 0, i_len = 0;
 
4744
   gint i_value = 0, i_len = 0, ov_i_watt = 0;
4648
4745
   gfloat f_value = 0.0;
4649
4746
   gchar *s_value = NULL, ch[GAPC_MAX_TEXT];
4650
4747
   gboolean b_value = FALSE, b_flag_dupped = FALSE;
4688
4785
         GAPC_PREFS_SYSTRAY, &ov_b_tray,
4689
4786
         GAPC_PREFS_PORT, &ov_i_port,
4690
4787
         GAPC_PREFS_GRAPH, &ov_f_graph,
4691
 
         GAPC_PREFS_REFRESH, &ov_f_refresh, GAPC_PREFS_HOST, &ov_s_host, -1);
 
4788
         GAPC_PREFS_REFRESH, &ov_f_refresh, 
 
4789
         GAPC_PREFS_HOST, &ov_s_host, 
 
4790
         GAPC_PREFS_WATT, &ov_i_watt,-1);
4692
4791
 
4693
4792
   }
4694
4793
   if (entry->value != NULL) {
4716
4815
   if (!b_ls_valid && b_v_valid && b_k_valid) { /* add new rec if keys valid -nfound */
4717
4816
      gtk_list_store_append(GTK_LIST_STORE(pcfg->prefs_model), &iter);
4718
4817
      gtk_list_store_set(GTK_LIST_STORE(pcfg->prefs_model), &iter,
4719
 
         GAPC_PREFS_MONITOR, i_monitor, GAPC_PREFS_SYSTRAY, FALSE,
 
4818
         GAPC_PREFS_MONITOR, i_monitor, 
 
4819
         GAPC_PREFS_SYSTRAY, FALSE,
4720
4820
         GAPC_PREFS_ENABLED, FALSE,
4721
 
         GAPC_PREFS_PORT, GAPC_PORT_DEFAULT, GAPC_PREFS_GRAPH,
4722
 
         GAPC_LINEGRAPH_REFRESH_FACTOR, GAPC_PREFS_HOST,
4723
 
         GAPC_HOST_DEFAULT, GAPC_PREFS_REFRESH, GAPC_REFRESH_DEFAULT, -1);
 
4821
         GAPC_PREFS_PORT, GAPC_PORT_DEFAULT, 
 
4822
         GAPC_PREFS_GRAPH, GAPC_LINEGRAPH_REFRESH_FACTOR, 
 
4823
         GAPC_PREFS_HOST, GAPC_HOST_DEFAULT, 
 
4824
         GAPC_PREFS_REFRESH, GAPC_REFRESH_DEFAULT, 
 
4825
         GAPC_PREFS_WATT, GAPC_WATT_DEFAULT, -1);
4724
4826
 
4725
4827
      b_ls_valid = TRUE;
4726
4828
      b_add = TRUE;
4787
4889
            }
4788
4890
         }
4789
4891
      }
 
4892
      if (g_str_equal(pkey, "ups_wattage")) {
 
4893
         i_value = gconf_value_get_int(entry->value);
 
4894
         if (i_value != ov_i_watt) {
 
4895
            gtk_list_store_set(GTK_LIST_STORE(pcfg->prefs_model), &iter,
 
4896
               GAPC_PREFS_WATT, i_value, -1);
 
4897
         }
 
4898
         if ( pm != NULL) {
 
4899
              pm->i_watt = i_value;
 
4900
         }
 
4901
      }
4790
4902
      if (g_str_equal(pkey, "network_interval")) {
4791
4903
         f_value = gconf_value_get_float(entry->value);
4792
4904
         if (f_value != ov_f_refresh) {
5657
5769
   gtk_widget_show(rbox);
5658
5770
 
5659
5771
   label = gtk_label_new("APCUPSD version\n" "Monitored UPS name\n"
5660
 
      "Cable Driver type\n" "Configuration mode\n" "Last started\n" "UPS State");
 
5772
      "Cable Driver type\n" "Configuration mode\n" "Last started\n" "UPS State\n");
5661
5773
   gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
5662
5774
   gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
5663
5775
   gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5711
5823
   gtk_widget_show(rbox);
5712
5824
 
5713
5825
   label = gtk_label_new("Device\n" "Serial\n" "Manf date\n" "Firmware\n"
5714
 
      "Batt date");
 
5826
      "Batt date\n" "Wattage");
5715
5827
   gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
5716
5828
   gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
5717
5829
   gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
6047
6159
      GAPC_PREFS_PORT, &(pm->i_port),
6048
6160
      GAPC_PREFS_GRAPH, &(pm->d_graph),
6049
6161
      GAPC_PREFS_HOST, &(pm->pch_host),
6050
 
      GAPC_PREFS_REFRESH, &(pm->d_refresh), GAPC_PREFS_MONITOR, &z_monitor, -1);
 
6162
      GAPC_PREFS_REFRESH, &(pm->d_refresh), 
 
6163
      GAPC_PREFS_MONITOR, &z_monitor, 
 
6164
      GAPC_PREFS_WATT, &pm->i_watt,
 
6165
      -1);
6051
6166
 
6052
6167
   pixbuf = pm->my_icons[GAPC_ICON_DEFAULT];
6053
6168
   pm->tooltips = gtk_tooltips_new();