Add the Ceph monitoring GUI
This adds a graphical monitoring mode to the ceph cluster monitoring tool. Its functionality is similar to ./ceph -w. With ./ceph -g, you can watch over the whole cluster graphically. It uses GTK2. Signed-off-by: Colin McCabe <colinm@hq.newdream.net>
@ -220,6 +220,8 @@ AM_CONDITIONAL(WITH_GTK2, [test "x$HAVE_GTK2" = "xyes"])
|
||||
|
||||
if test "x$HAVE_GTK2" == "xyes"; then
|
||||
PKG_CHECK_MODULES(GTKMM, [gtkmm-2.4 >= 1.0.0])
|
||||
AC_DEFINE([HAVE_GTK2], [1],
|
||||
[Define if you have GTK2])
|
||||
fi
|
||||
|
||||
AC_CONFIG_HEADERS([src/acconfig.h])
|
||||
|
@ -29,6 +29,14 @@ cmds_CXXFLAGS = ${AM_CFLAGS}
|
||||
# admin tools
|
||||
ceph_SOURCES = tools/ceph.cc msg/SimpleMessenger.cc
|
||||
ceph_LDADD = libcrush.a libcommon.a -ledit -lpthread -lm -lcrypto
|
||||
ceph_CXXFLAGS = ${AM_CFLAGS}
|
||||
|
||||
if WITH_GTK2
|
||||
ceph_SOURCES += tools/gui.cc
|
||||
ceph_LDADD += $(GTKMM_LIBS)
|
||||
ceph_CXXFLAGS += $(GTKMM_CFLAGS)
|
||||
endif
|
||||
|
||||
cconf_SOURCES = cconf.cc
|
||||
cconf_LDADD = libcommon.a -lpthread -lm -lcrypto
|
||||
cauthtool_SOURCES = cauthtool.cc
|
||||
|
@ -17,14 +17,16 @@
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "mon/MonMap.h"
|
||||
#include "mon/MonClient.h"
|
||||
#include "msg/SimpleMessenger.h"
|
||||
#include "acconfig.h"
|
||||
#include "messages/MMonCommand.h"
|
||||
#include "messages/MMonCommandAck.h"
|
||||
#include "mon/MonClient.h"
|
||||
#include "mon/MonMap.h"
|
||||
#include "msg/SimpleMessenger.h"
|
||||
#include "tools/ceph.h"
|
||||
|
||||
#include "common/Cond.h"
|
||||
#include "common/Mutex.h"
|
||||
#include "common/Timer.h"
|
||||
#include "common/common_init.h"
|
||||
|
||||
@ -40,15 +42,22 @@ extern "C" {
|
||||
#include <histedit.h>
|
||||
}
|
||||
|
||||
enum CephToolMode {
|
||||
CEPH_TOOL_MODE_CLI_INPUT = 0,
|
||||
CEPH_TOOL_MODE_OBSERVER = 1,
|
||||
CEPH_TOOL_MODE_ONE_SHOT_OBSERVER = 2,
|
||||
CEPH_TOOL_MODE_GUI = 3
|
||||
};
|
||||
|
||||
static enum CephToolMode ceph_tool_mode(CEPH_TOOL_MODE_CLI_INPUT);
|
||||
|
||||
Mutex lock("ceph.cc lock");
|
||||
Cond cond;
|
||||
SimpleMessenger *messenger = 0;
|
||||
SafeTimer timer(lock);
|
||||
MonClient mc;
|
||||
struct ceph_tool_data g;
|
||||
|
||||
const char *outfile = 0;
|
||||
static Cond cmd_cond;
|
||||
static SimpleMessenger *messenger = 0;
|
||||
static SafeTimer timer(g.lock);
|
||||
|
||||
static const char *outfile = 0;
|
||||
|
||||
|
||||
|
||||
@ -76,27 +85,22 @@ Context *resend_event = 0;
|
||||
#include "messages/MMonObserve.h"
|
||||
#include "messages/MMonObserveNotify.h"
|
||||
|
||||
int observe = 0;
|
||||
bool one_shot = false;
|
||||
static PGMap pgmap;
|
||||
static MDSMap mdsmap;
|
||||
static OSDMap osdmap;
|
||||
|
||||
static set<int> registered, seen;
|
||||
|
||||
version_t map_ver[PAXOS_NUM];
|
||||
|
||||
void handle_observe(MMonObserve *observe)
|
||||
static void handle_observe(MMonObserve *observe)
|
||||
{
|
||||
dout(1) << observe->get_source() << " -> " << get_paxos_name(observe->machine_id)
|
||||
<< " registered" << dendl;
|
||||
lock.Lock();
|
||||
g.lock.Lock();
|
||||
registered.insert(observe->machine_id);
|
||||
lock.Unlock();
|
||||
g.lock.Unlock();
|
||||
observe->put();
|
||||
}
|
||||
|
||||
void handle_notify(MMonObserveNotify *notify)
|
||||
static void handle_notify(MMonObserveNotify *notify)
|
||||
{
|
||||
utime_t now = g_clock.now();
|
||||
|
||||
@ -105,8 +109,8 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
<< (notify->is_latest ? " (latest)" : "")
|
||||
<< dendl;
|
||||
|
||||
if (ceph_fsid_compare(¬ify->fsid, &mc.monmap.fsid)) {
|
||||
dout(0) << notify->get_source_inst() << " notify fsid " << notify->fsid << " != " << mc.monmap.fsid << dendl;
|
||||
if (ceph_fsid_compare(¬ify->fsid, &g.mc.monmap.fsid)) {
|
||||
dout(0) << notify->get_source_inst() << " notify fsid " << notify->fsid << " != " << g.mc.monmap.fsid << dendl;
|
||||
notify->put();
|
||||
return;
|
||||
}
|
||||
@ -119,31 +123,34 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
{
|
||||
bufferlist::iterator p = notify->bl.begin();
|
||||
if (notify->is_latest) {
|
||||
pgmap.decode(p);
|
||||
g.pgmap.decode(p);
|
||||
} else {
|
||||
PGMap::Incremental inc;
|
||||
inc.decode(p);
|
||||
pgmap.apply_incremental(inc);
|
||||
g.pgmap.apply_incremental(inc);
|
||||
}
|
||||
cout << now << " pg " << pgmap << std::endl;
|
||||
*g.log << now << " pg " << g.pgmap << std::endl;
|
||||
g.updates |= PG_MON_UPDATE;
|
||||
break;
|
||||
}
|
||||
|
||||
case PAXOS_MDSMAP:
|
||||
mdsmap.decode(notify->bl);
|
||||
cout << now << " mds " << mdsmap << std::endl;
|
||||
g.mdsmap.decode(notify->bl);
|
||||
*g.log << now << " mds " << g.mdsmap << std::endl;
|
||||
g.updates |= MDS_MON_UPDATE;
|
||||
break;
|
||||
|
||||
case PAXOS_OSDMAP:
|
||||
{
|
||||
if (notify->is_latest) {
|
||||
osdmap.decode(notify->bl);
|
||||
g.osdmap.decode(notify->bl);
|
||||
} else {
|
||||
OSDMap::Incremental inc(notify->bl);
|
||||
osdmap.apply_incremental(inc);
|
||||
g.osdmap.apply_incremental(inc);
|
||||
}
|
||||
cout << now << " osd " << osdmap << std::endl;
|
||||
*g.log << now << " osd " << g.osdmap << std::endl;
|
||||
}
|
||||
g.updates |= OSD_MON_UPDATE;
|
||||
break;
|
||||
|
||||
case PAXOS_LOG:
|
||||
@ -154,14 +161,14 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
::decode(summary, p);
|
||||
// show last log message
|
||||
if (!summary.tail.empty())
|
||||
cout << now << " log " << summary.tail.back() << std::endl;
|
||||
*g.log << now << " log " << summary.tail.back() << std::endl;
|
||||
} else {
|
||||
LogEntry le;
|
||||
__u8 v;
|
||||
::decode(v, p);
|
||||
while (!p.end()) {
|
||||
le.decode(p);
|
||||
cout << now << " log " << le << std::endl;
|
||||
*g.log << now << " log " << le << std::endl;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -180,7 +187,7 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
tClassVersionMap::iterator iter = map.begin();
|
||||
|
||||
if (iter != map.end())
|
||||
cout << now << " class " << iter->second << std::endl;
|
||||
*g.log << now << " class " << iter->second << std::endl;
|
||||
}
|
||||
} else {
|
||||
__u8 v;
|
||||
@ -190,7 +197,7 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
::decode(inc, p);
|
||||
ClassInfo info;
|
||||
inc.decode_info(info);
|
||||
cout << now << " class " << info << std::endl;
|
||||
*g.log << now << " class " << info << std::endl;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -203,12 +210,12 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
if (notify->is_latest) {
|
||||
KeyServerData data;
|
||||
::decode(data, p);
|
||||
cout << now << " auth " << std::endl;
|
||||
*g.log << now << " auth " << std::endl;
|
||||
} else {
|
||||
while (!p.end()) {
|
||||
AuthMonitor::Incremental inc;
|
||||
inc.decode(p);
|
||||
cout << now << " auth " << inc.name.to_str() << std::endl;
|
||||
*g.log << now << " auth " << inc.name.to_str() << std::endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -218,22 +225,32 @@ void handle_notify(MMonObserveNotify *notify)
|
||||
|
||||
case PAXOS_MONMAP:
|
||||
{
|
||||
mc.monmap.decode(notify->bl);
|
||||
cout << now << " mon " << mc.monmap << std::endl;
|
||||
g.mc.monmap.decode(notify->bl);
|
||||
*g.log << now << " mon " << g.mc.monmap << std::endl;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
cout << now << " ignoring unknown machine id " << notify->machine_id << std::endl;
|
||||
*g.log << now << " ignoring unknown machine id " << notify->machine_id << std::endl;
|
||||
}
|
||||
|
||||
map_ver[notify->machine_id] = notify->ver;
|
||||
|
||||
// have we seen them all?
|
||||
seen.insert(notify->machine_id);
|
||||
if (one_shot && seen.size() == PAXOS_NUM) {
|
||||
messenger->shutdown();
|
||||
}
|
||||
switch (ceph_tool_mode) {
|
||||
case CEPH_TOOL_MODE_ONE_SHOT_OBSERVER:
|
||||
if (seen.size() == PAXOS_NUM) {
|
||||
messenger->shutdown();
|
||||
}
|
||||
break;
|
||||
case CEPH_TOOL_MODE_GUI:
|
||||
g.gui_cond.Signal();
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
}
|
||||
|
||||
notify->put();
|
||||
}
|
||||
@ -255,9 +272,9 @@ static void send_observe_requests()
|
||||
|
||||
bool sent = false;
|
||||
for (int i=0; i<PAXOS_NUM; i++) {
|
||||
MMonObserve *m = new MMonObserve(mc.monmap.fsid, i, map_ver[i]);
|
||||
MMonObserve *m = new MMonObserve(g.mc.monmap.fsid, i, map_ver[i]);
|
||||
dout(1) << "mon" << " <- observe " << get_paxos_name(i) << dendl;
|
||||
mc.send_mon_message(m);
|
||||
g.mc.send_mon_message(m);
|
||||
sent = true;
|
||||
}
|
||||
|
||||
@ -267,35 +284,34 @@ static void send_observe_requests()
|
||||
timer.add_event_after(seconds, new C_ObserverRefresh(false));
|
||||
}
|
||||
|
||||
void handle_ack(MMonCommandAck *ack)
|
||||
static void handle_ack(MMonCommandAck *ack)
|
||||
{
|
||||
lock.Lock();
|
||||
g.lock.Lock();
|
||||
reply = true;
|
||||
reply_from = ack->get_source_inst();
|
||||
reply_rs = ack->rs;
|
||||
reply_rc = ack->r;
|
||||
reply_bl = ack->get_data();
|
||||
cond.Signal();
|
||||
cmd_cond.Signal();
|
||||
if (resend_event) {
|
||||
timer.cancel_event(resend_event);
|
||||
resend_event = 0;
|
||||
}
|
||||
lock.Unlock();
|
||||
g.lock.Unlock();
|
||||
ack->put();
|
||||
}
|
||||
|
||||
void send_command()
|
||||
static void send_command()
|
||||
{
|
||||
version_t last_seen_version = 0;
|
||||
MMonCommand *m = new MMonCommand(mc.monmap.fsid, last_seen_version);
|
||||
MMonCommand *m = new MMonCommand(g.mc.monmap.fsid, last_seen_version);
|
||||
m->cmd = pending_cmd;
|
||||
m->set_data(pending_bl);
|
||||
|
||||
cout << g_clock.now() << " mon" << " <- " << pending_cmd << std::endl;
|
||||
mc.send_mon_message(m);
|
||||
*g.log << g_clock.now() << " mon" << " <- " << pending_cmd << std::endl;
|
||||
g.mc.send_mon_message(m);
|
||||
}
|
||||
|
||||
|
||||
class Admin : public Dispatcher {
|
||||
bool ms_dispatch(Message *m) {
|
||||
switch (m->get_type()) {
|
||||
@ -319,12 +335,13 @@ class Admin : public Dispatcher {
|
||||
|
||||
void ms_handle_connect(Connection *con) {
|
||||
if (con->get_peer_type() == CEPH_ENTITY_TYPE_MON) {
|
||||
lock.Lock();
|
||||
if (observe)
|
||||
g.lock.Lock();
|
||||
if (ceph_tool_mode != CEPH_TOOL_MODE_CLI_INPUT) {
|
||||
send_observe_requests();
|
||||
}
|
||||
if (pending_cmd.size())
|
||||
send_command();
|
||||
lock.Unlock();
|
||||
g.lock.Unlock();
|
||||
}
|
||||
}
|
||||
bool ms_handle_reset(Connection *con) { return false; }
|
||||
@ -334,7 +351,7 @@ class Admin : public Dispatcher {
|
||||
|
||||
int do_command(vector<string>& cmd, bufferlist& bl, string& rs, bufferlist& rbl)
|
||||
{
|
||||
Mutex::Locker l(lock);
|
||||
Mutex::Locker l(g.lock);
|
||||
|
||||
pending_cmd = cmd;
|
||||
pending_bl = bl;
|
||||
@ -343,11 +360,11 @@ int do_command(vector<string>& cmd, bufferlist& bl, string& rs, bufferlist& rbl)
|
||||
send_command();
|
||||
|
||||
while (!reply)
|
||||
cond.Wait(lock);
|
||||
cmd_cond.Wait(g.lock);
|
||||
|
||||
rs = rs;
|
||||
rbl = reply_bl;
|
||||
cout << g_clock.now() << " "
|
||||
*g.log << g_clock.now() << " "
|
||||
<< reply_from.name << " -> '"
|
||||
<< reply_rs << "' (" << reply_rc << ")"
|
||||
<< std::endl;
|
||||
@ -355,9 +372,7 @@ int do_command(vector<string>& cmd, bufferlist& bl, string& rs, bufferlist& rbl)
|
||||
return reply_rc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void usage()
|
||||
static void usage()
|
||||
{
|
||||
cerr << "usage: ceph [options] [commands]" << std::endl;
|
||||
cerr << "If no commands are specified, enter interactive mode.\n";
|
||||
@ -373,11 +388,13 @@ void usage()
|
||||
cerr << " print current system status\n";
|
||||
cerr << " -w or --watch\n";
|
||||
cerr << " watch system status changes in real time (push)\n";
|
||||
cerr << " -g or --gui\n";
|
||||
cerr << " watch system status changes graphically\n";
|
||||
generic_client_usage();
|
||||
}
|
||||
|
||||
|
||||
const char *cli_prompt(EditLine *e) {
|
||||
static const char *cli_prompt(EditLine *e)
|
||||
{
|
||||
return "ceph> ";
|
||||
}
|
||||
|
||||
@ -402,95 +419,21 @@ int do_cli()
|
||||
/* This sets up the call back functions for history functionality */
|
||||
el_set(el, EL_HIST, history, myhistory);
|
||||
|
||||
Tokenizer *tok = tok_init(NULL);
|
||||
|
||||
bufferlist in;
|
||||
while (1) {
|
||||
int count; // # chars read
|
||||
const char *line = el_gets(el, &count);
|
||||
int chars_read;
|
||||
const char *line = el_gets(el, &chars_read);
|
||||
|
||||
if (!count) {
|
||||
cout << "quit" << std::endl;
|
||||
//*g.log << "typed '" << line << "'" << std::endl;
|
||||
|
||||
if (chars_read == 0) {
|
||||
*g.log << "quit" << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
//cout << "typed '" << line << "'" << std::endl;
|
||||
|
||||
if (strcmp(line, "quit\n") == 0)
|
||||
break;
|
||||
|
||||
history(myhistory, &ev, H_ENTER, line);
|
||||
|
||||
int argc;
|
||||
const char **argv;
|
||||
tok_str(tok, line, &argc, &argv);
|
||||
tok_reset(tok);
|
||||
|
||||
vector<string> cmd;
|
||||
const char *infile = 0;
|
||||
const char *outfile = 0;
|
||||
for (int i=0; i<argc; i++) {
|
||||
if (strcmp(argv[i], ">") == 0 && i < argc-1) {
|
||||
outfile = argv[++i];
|
||||
continue;
|
||||
}
|
||||
if (argv[i][0] == '>') {
|
||||
outfile = argv[i] + 1;
|
||||
while (*outfile == ' ') outfile++;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(argv[i], "<") == 0 && i < argc-1) {
|
||||
infile = argv[++i];
|
||||
continue;
|
||||
}
|
||||
if (argv[i][0] == '<') {
|
||||
infile = argv[i] + 1;
|
||||
while (*infile == ' ') infile++;
|
||||
continue;
|
||||
}
|
||||
cmd.push_back(argv[i]);
|
||||
}
|
||||
if (cmd.empty())
|
||||
continue;
|
||||
|
||||
if (cmd.size() == 1 && cmd[0] == "print") {
|
||||
cout << "----" << std::endl;
|
||||
write(1, in.c_str(), in.length());
|
||||
cout << "---- (" << in.length() << " bytes)" << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
//cout << "cmd is " << cmd << std::endl;
|
||||
|
||||
bufferlist out;
|
||||
if (infile) {
|
||||
if (out.read_file(infile) == 0) {
|
||||
cout << "read " << out.length() << " from " << infile << std::endl;
|
||||
} else {
|
||||
char buf[80];
|
||||
cerr << "couldn't read from " << infile << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
in.clear();
|
||||
string rs;
|
||||
do_command(cmd, out, rs, in);
|
||||
|
||||
if (in.length()) {
|
||||
if (outfile) {
|
||||
if (strcmp(outfile, "-") == 0) {
|
||||
cout << "----" << std::endl;
|
||||
write(1, in.c_str(), in.length());
|
||||
cout << "---- (" << in.length() << " bytes)" << std::endl;
|
||||
} else {
|
||||
in.write_file(outfile);
|
||||
cout << "wrote " << in.length() << " to " << outfile << std::endl;
|
||||
}
|
||||
} else {
|
||||
cout << "got " << in.length() << " byte payload; 'print' to dump to terminal, or add '>-' to command." << std::endl;
|
||||
}
|
||||
}
|
||||
if (run_command(line))
|
||||
break;
|
||||
}
|
||||
|
||||
history_end(myhistory);
|
||||
@ -499,12 +442,95 @@ int do_cli()
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int main(int argc, const char **argv, const char *envp[])
|
||||
int run_command(const char *line)
|
||||
{
|
||||
if (strcmp(line, "quit\n") == 0)
|
||||
return 1;
|
||||
|
||||
int argc;
|
||||
const char **argv;
|
||||
Tokenizer *tok = tok_init(NULL);
|
||||
tok_str(tok, line, &argc, &argv);
|
||||
tok_reset(tok);
|
||||
tok_end(tok);
|
||||
|
||||
vector<string> cmd;
|
||||
const char *infile = 0;
|
||||
const char *outfile = 0;
|
||||
for (int i=0; i<argc; i++) {
|
||||
if (strcmp(argv[i], ">") == 0 && i < argc-1) {
|
||||
outfile = argv[++i];
|
||||
continue;
|
||||
}
|
||||
if (argv[i][0] == '>') {
|
||||
outfile = argv[i] + 1;
|
||||
while (*outfile == ' ') outfile++;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(argv[i], "<") == 0 && i < argc-1) {
|
||||
infile = argv[++i];
|
||||
continue;
|
||||
}
|
||||
if (argv[i][0] == '<') {
|
||||
infile = argv[i] + 1;
|
||||
while (*infile == ' ') infile++;
|
||||
continue;
|
||||
}
|
||||
cmd.push_back(argv[i]);
|
||||
}
|
||||
if (cmd.empty())
|
||||
return 0;
|
||||
|
||||
bufferlist in;
|
||||
if (cmd.size() == 1 && cmd[0] == "print") {
|
||||
*g.log << "----" << std::endl;
|
||||
write(1, in.c_str(), in.length());
|
||||
*g.log << "---- (" << in.length() << " bytes)" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//out << "cmd is " << cmd << std::endl;
|
||||
|
||||
bufferlist out;
|
||||
if (infile) {
|
||||
if (out.read_file(infile) == 0) {
|
||||
*g.log << "read " << out.length() << " from " << infile << std::endl;
|
||||
} else {
|
||||
char buf[80];
|
||||
*g.log << "couldn't read from " << infile << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
in.clear();
|
||||
string rs;
|
||||
do_command(cmd, out, rs, in);
|
||||
|
||||
if (in.length() == 0)
|
||||
return 0;
|
||||
|
||||
if (outfile) {
|
||||
if (strcmp(outfile, "-") == 0) {
|
||||
*g.log << "----" << std::endl;
|
||||
write(1, in.c_str(), in.length());
|
||||
*g.log << "---- (" << in.length() << " bytes)" << std::endl;
|
||||
}
|
||||
else {
|
||||
in.write_file(outfile);
|
||||
*g.log << "wrote " << in.length() << " to "
|
||||
<< outfile << std::endl;
|
||||
}
|
||||
}
|
||||
else {
|
||||
*g.log << "got " << in.length() << " byte payload; 'print' "
|
||||
<< "to dump to terminal, or add '>-' to command." << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
ostringstream gss;
|
||||
DEFINE_CONF_VARS(usage);
|
||||
vector<const char*> args;
|
||||
argv_to_vec(argc, argv, args);
|
||||
@ -542,12 +568,13 @@ int main(int argc, const char **argv, const char *envp[])
|
||||
cout << "read " << st.st_size << " bytes from " << args[i] << std::endl;
|
||||
}
|
||||
} else if (CONF_ARG_EQ("status", 's')) {
|
||||
CONF_SAFE_SET_ARG_VAL(&observe, OPT_BOOL);
|
||||
one_shot = true;
|
||||
ceph_tool_mode = CEPH_TOOL_MODE_ONE_SHOT_OBSERVER;
|
||||
} else if (CONF_ARG_EQ("watch", 'w')) {
|
||||
CONF_SAFE_SET_ARG_VAL(&observe, OPT_BOOL);
|
||||
ceph_tool_mode = CEPH_TOOL_MODE_OBSERVER;
|
||||
} else if (CONF_ARG_EQ("help", 'h')) {
|
||||
usage();
|
||||
} else if (CONF_ARG_EQ("gui", 'g')) {
|
||||
ceph_tool_mode = CEPH_TOOL_MODE_GUI;
|
||||
} else if (args[i][0] == '-' && nargs.empty()) {
|
||||
cerr << "unrecognized option " << args[i] << std::endl;
|
||||
usage();
|
||||
@ -565,7 +592,7 @@ int main(int argc, const char **argv, const char *envp[])
|
||||
}
|
||||
|
||||
// get monmap
|
||||
if (mc.build_initial_monmap() < 0)
|
||||
if (g.mc.build_initial_monmap() < 0)
|
||||
return -1;
|
||||
|
||||
// start up network
|
||||
@ -575,31 +602,39 @@ int main(int argc, const char **argv, const char *envp[])
|
||||
|
||||
messenger->start();
|
||||
|
||||
mc.set_messenger(messenger);
|
||||
mc.init();
|
||||
g.mc.set_messenger(messenger);
|
||||
g.mc.init();
|
||||
|
||||
if (mc.authenticate() < 0) {
|
||||
if (g.mc.authenticate() < 0) {
|
||||
cerr << "unable to authenticate as " << *g_conf.entity_name << std::endl;
|
||||
return -1;
|
||||
}
|
||||
if (mc.get_monmap() < 0) {
|
||||
if (g.mc.get_monmap() < 0) {
|
||||
cerr << "unable to get monmap" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
|
||||
if (observe) {
|
||||
lock.Lock();
|
||||
send_observe_requests();
|
||||
lock.Unlock();
|
||||
} else {
|
||||
if (vcmd.size()) {
|
||||
|
||||
switch (ceph_tool_mode)
|
||||
{
|
||||
case CEPH_TOOL_MODE_OBSERVER:
|
||||
case CEPH_TOOL_MODE_ONE_SHOT_OBSERVER:
|
||||
g.lock.Lock();
|
||||
send_observe_requests();
|
||||
g.lock.Unlock();
|
||||
break;
|
||||
|
||||
case CEPH_TOOL_MODE_CLI_INPUT: {
|
||||
if (vcmd.empty()) {
|
||||
// interactive mode
|
||||
do_cli();
|
||||
messenger->shutdown();
|
||||
break;
|
||||
}
|
||||
string rs;
|
||||
bufferlist odata;
|
||||
ret = do_command(vcmd, indata, rs, odata);
|
||||
|
||||
int len = odata.length();
|
||||
if (len) {
|
||||
if (outfile) {
|
||||
@ -613,18 +648,37 @@ int main(int argc, const char **argv, const char *envp[])
|
||||
cout << g_clock.now() << " got " << len << " byte payload, discarding (specify -o <outfile)" << std::endl;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// interactive mode
|
||||
do_cli();
|
||||
messenger->shutdown();
|
||||
break;
|
||||
}
|
||||
|
||||
messenger->shutdown();
|
||||
}
|
||||
|
||||
case CEPH_TOOL_MODE_GUI: {
|
||||
#ifdef HAVE_GTK2
|
||||
g.log = &gss;
|
||||
g.slog = &gss;
|
||||
|
||||
// TODO: make sure that we capture the log this generates in the GUI
|
||||
g.lock.Lock();
|
||||
send_observe_requests();
|
||||
g.lock.Unlock();
|
||||
|
||||
run_gui(argc, (char **)argv);
|
||||
#else
|
||||
cerr << "I'm sorry. This tool was not compiled with support for "
|
||||
<< "GTK2." << std::endl;
|
||||
ret = EXIT_FAILURE;
|
||||
#endif
|
||||
messenger->shutdown();
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
// wait for messenger to finish
|
||||
messenger->wait();
|
||||
messenger->destroy();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
60
src/tools/ceph.h
Normal file
@ -0,0 +1,60 @@
|
||||
#ifndef CEPH_TOOL_H
|
||||
#define CEPH_TOOL_H
|
||||
|
||||
#include "common/Cond.h"
|
||||
#include "common/Mutex.h"
|
||||
#include "mon/MonClient.h"
|
||||
#include "mon/PGMap.h"
|
||||
#include "mds/MDSMap.h"
|
||||
#include "osd/OSDMap.h"
|
||||
|
||||
#include <iosfwd>
|
||||
#include <stdint.h>
|
||||
|
||||
#define OSD_MON_UPDATE (1<<0)
|
||||
#define MDS_MON_UPDATE (1<<1)
|
||||
#define PG_MON_UPDATE (1<<2)
|
||||
#define MON_MON_UPDATE (1<<3)
|
||||
#define EVERYTHING_UPDATE 0xffffffff
|
||||
|
||||
// tool/ceph.cc
|
||||
struct ceph_tool_data
|
||||
{
|
||||
PGMap pgmap;
|
||||
MDSMap mdsmap;
|
||||
OSDMap osdmap;
|
||||
MonClient mc;
|
||||
|
||||
// Which aspects of the cluster have been updated recently?
|
||||
uint32_t updates;
|
||||
|
||||
// The main log for ceph-tool
|
||||
std::ostream *log;
|
||||
|
||||
// Used by the GUI to read from the log.
|
||||
// NULL if there is no GUI active.
|
||||
std::ostringstream *slog;
|
||||
|
||||
// The ceph-tool lock
|
||||
Mutex lock;
|
||||
|
||||
// A condition variable used to wake up the GUI thread
|
||||
Cond gui_cond;
|
||||
|
||||
ceph_tool_data()
|
||||
: updates(EVERYTHING_UPDATE),
|
||||
log(&std::cout),
|
||||
slog(NULL),
|
||||
lock("ceph.cc lock")
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// tool/ceph.cc
|
||||
extern struct ceph_tool_data g;
|
||||
int run_command(const char *line);
|
||||
|
||||
// tool/gyi.cc
|
||||
int run_gui(int argc, char **argv);
|
||||
|
||||
#endif
|
1727
src/tools/gui.cc
Normal file
394
src/tools/gui.h
Normal file
@ -0,0 +1,394 @@
|
||||
/* -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
|
||||
* vim: ts=8 sw=2 smarttab
|
||||
*
|
||||
* gui_monitor_interface.h
|
||||
*
|
||||
* Michael McThrow <mmcthrow@gmail.com>
|
||||
*/
|
||||
#ifndef CEPH_GUI_H
|
||||
#define CEPH_GUI_H
|
||||
|
||||
#include "common/common_init.h"
|
||||
#include "mds/MDSMap.h"
|
||||
#include "mon/MonMap.h"
|
||||
#include "mon/PGMap.h"
|
||||
#include "msg/tcp.h"
|
||||
#include "osd/OSDMap.h"
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <gtkmm.h>
|
||||
#include <iosfwd>
|
||||
|
||||
enum NodeType {
|
||||
OSD_NODE = 0,
|
||||
PG_NODE,
|
||||
MDS_NODE,
|
||||
MON_NODE,
|
||||
NUM_NODE_TYPES
|
||||
};
|
||||
|
||||
class GuiMonitorThread;
|
||||
|
||||
// Contains information about a range of nodes (or a specific node)
|
||||
class NodeInfo {
|
||||
public:
|
||||
unsigned int begin_range;
|
||||
unsigned int end_range;
|
||||
enum NodeType type;
|
||||
int status;
|
||||
|
||||
NodeInfo(unsigned int begin_range_, unsigned int end_range_,
|
||||
enum NodeType type_, int status_)
|
||||
: begin_range(begin_range_),
|
||||
end_range(end_range_),
|
||||
type(type_),
|
||||
status(status_)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// Variables, classes, and methods releated to handling the main window and
|
||||
// dialog boxes are stored in the GuiMonitor class.
|
||||
class GuiMonitor
|
||||
{
|
||||
private:
|
||||
// Used for displaying icons of the nodes in a cluster.
|
||||
class NodeIconColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
public:
|
||||
Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > icon;
|
||||
Gtk::TreeModelColumn<Glib::ustring> caption;
|
||||
Gtk::TreeModelColumn<unsigned int> begin_range;
|
||||
Gtk::TreeModelColumn<unsigned int> end_range;
|
||||
Gtk::TreeModelColumn<int> status;
|
||||
|
||||
NodeIconColumns() {
|
||||
add(icon);
|
||||
add(caption);
|
||||
add(begin_range);
|
||||
add(end_range);
|
||||
add(status);
|
||||
}
|
||||
};
|
||||
|
||||
// Used for displaying information about either a cluter or a node.
|
||||
class KeyValueModelColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
public:
|
||||
Gtk::TreeModelColumn<Glib::ustring> key;
|
||||
Gtk::TreeModelColumn<Glib::ustring> value;
|
||||
|
||||
KeyValueModelColumns() {
|
||||
add(key);
|
||||
add(value);
|
||||
}
|
||||
};
|
||||
|
||||
// Used for displaying different types of nodes in the "View Node..." dialog
|
||||
// box.
|
||||
class ViewNodeOptionColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
public:
|
||||
Gtk::TreeModelColumn<enum NodeType> type;
|
||||
Gtk::TreeModelColumn<Glib::ustring> name;
|
||||
|
||||
ViewNodeOptionColumns() {
|
||||
add(type);
|
||||
add(name);
|
||||
}
|
||||
};
|
||||
|
||||
// Variables, classes, and methods related to the node statistics and cluster
|
||||
// statistics windows.
|
||||
class StatsWindowInfo {
|
||||
public:
|
||||
StatsWindowInfo(GuiMonitor *gui_,
|
||||
Glib::RefPtr<Gtk::Builder> builder,
|
||||
bool is_cluster_, enum NodeType type_, int id_);
|
||||
|
||||
~StatsWindowInfo();
|
||||
void init();
|
||||
|
||||
public:
|
||||
/*
|
||||
* GUI Elements
|
||||
*/
|
||||
GuiMonitor *gui;
|
||||
Gtk::Window *stats_window;
|
||||
Gtk::Label *stats_info_label;
|
||||
Gtk::TreeView *stats_info_tree_view;
|
||||
Gtk::Button *stats_copy_button;
|
||||
Gtk::Button *stats_save_button;
|
||||
Gtk::Button *stats_close_button;
|
||||
|
||||
private:
|
||||
KeyValueModelColumns columns;
|
||||
Glib::RefPtr<Gtk::ListStore> stats;
|
||||
|
||||
bool is_cluster;
|
||||
enum NodeType type;
|
||||
int id;
|
||||
|
||||
/*
|
||||
* Private Functions
|
||||
*/
|
||||
private:
|
||||
// Closes the window that contains the statistics of a node or cluster.
|
||||
// Called by nodeStatsWindow by signal_delete_event.
|
||||
bool closeWindow(GdkEventAny *event) {
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
||||
void copy();
|
||||
|
||||
// Closes the window that contains the statistics of a node or cluster.
|
||||
// Called by nodeStatsCloseButton by signal_clicked.
|
||||
void close() {
|
||||
delete this;
|
||||
}
|
||||
|
||||
void gen_osd_cluster_columns();
|
||||
void gen_mds_cluster_columns();
|
||||
void gen_pg_cluster_columns();
|
||||
void gen_monitor_cluster_columns();
|
||||
|
||||
void gen_osd_node_columns();
|
||||
void gen_mds_node_columns();
|
||||
void gen_pg_node_columns();
|
||||
|
||||
std::string stats_string();
|
||||
|
||||
void insert_stats(const std::string &key, const std::string &value);
|
||||
};
|
||||
|
||||
friend class StatsWindowInfo;
|
||||
|
||||
public:
|
||||
GuiMonitor(Glib::RefPtr<Gtk::Builder> builder);
|
||||
~GuiMonitor();
|
||||
|
||||
bool init();
|
||||
void run_main_loop(Gtk::Main &kit);
|
||||
|
||||
void check_status();
|
||||
|
||||
private:
|
||||
/*
|
||||
* Private Functions
|
||||
*/
|
||||
void get_widgets(Glib::RefPtr<Gtk::Builder> builder_object);
|
||||
bool open_icon(Glib::RefPtr<Gdk::Pixbuf> &icon, std::string path);
|
||||
void connect_signals();
|
||||
void link_elements();
|
||||
void update_osd_cluster_view();
|
||||
void update_mds_cluster_view();
|
||||
void update_pg_cluster_view();
|
||||
void update_mon_cluster_view();
|
||||
|
||||
std::string gen_osd_icon_caption(unsigned int begin, unsigned int end);
|
||||
std::string gen_mds_icon_caption(unsigned int begin, unsigned int end);
|
||||
std::string gen_pg_icon_caption(unsigned int begin, unsigned int end);
|
||||
|
||||
std::vector<NodeInfo *> gen_node_info_from_icons
|
||||
(Glib::RefPtr<Gtk::ListStore> iconStore, enum NodeType type);
|
||||
void gen_icons_from_node_info(vector<NodeInfo *>& node_info);
|
||||
|
||||
void view_osd_nodes(unsigned int begin, unsigned int end,
|
||||
bool view_all = true);
|
||||
void view_mds_nodes(unsigned int begin = 0, unsigned int end = 0,
|
||||
bool view_all = true);
|
||||
void view_pg_nodes(unsigned int begin, unsigned int end,
|
||||
bool view_all);
|
||||
int find_mds_id(const std::string &name);
|
||||
void open_stats(enum NodeType type, bool is_cluster, int id);
|
||||
void dialog_error(const std::string &msg, Gtk::MessageType type);
|
||||
|
||||
/*
|
||||
* Signal handlers
|
||||
*/
|
||||
// Exits the program. Called by Gtk::Main by signal_quit
|
||||
bool quit_signal_handler();
|
||||
|
||||
// Quits the GUI. Called by guiMonitorWindow by signal_delete_event.
|
||||
bool quit_gui(GdkEventAny *event);
|
||||
|
||||
// Quits the GUI. Called by guiMonitorQuitImageMenuItem by signal_activate.
|
||||
void gui_monitor_quit();
|
||||
|
||||
// Copies the text in guiMonitorLogTextView onto the clipboard. Called by
|
||||
// guiMonitorCopyImageMenuItem by signal_activate.
|
||||
void copy_log();
|
||||
|
||||
// Opens the "Send Command...." window. Called by
|
||||
// guiMonitorSendCommandMenuItem for signal_activate.
|
||||
void open_send_command();
|
||||
|
||||
// Opens the "View Node..." window. Called by guiMonitorViewNodeMenuItem by
|
||||
// signal_activate.
|
||||
void open_view_mode();
|
||||
|
||||
// Opens the "About" dialog box. Called by guiMonitorAboutImageMenuItem by
|
||||
// signal_activate.
|
||||
void open_about_dialog();
|
||||
|
||||
// Performs "zoom in" option for the PG cluster icon view area. Allows the
|
||||
// user to "zoom in" on a narrower range of nodes until he or she selects a
|
||||
// specific node of interest. Called by guiMonitorPGClusterIconView by
|
||||
// signal_item_activated.
|
||||
void pg_cluster_zoom_in(const Gtk::TreeModel::Path& path);
|
||||
|
||||
// Allows user to "zoom out" one level of the PG cluster view area to obtain
|
||||
// a broader range of nodes until he or she views the overall amount of
|
||||
// nodes. Called by guiMonitorPGClusterBackButton by signal_clicked
|
||||
void pg_cluster_back();
|
||||
|
||||
// Allows user to view the broadest range of nodes in the PG cluster. Called
|
||||
// by guiMonitorPGClusterViewAllButton by signal_clicked.
|
||||
void pg_cluster_view_all();
|
||||
|
||||
// Allows user to obtain the statistics of the PG cluster. Called by
|
||||
// guiMonitorPCClusterStatsButton by signal_clicked.
|
||||
void pg_cluster_stats();
|
||||
|
||||
// Allows user to obtain the statistics of the monitor cluster. Called by
|
||||
// guiMonitorMonitorClusterStatsButton by signal_clicked.
|
||||
void monitor_cluster_stats();
|
||||
|
||||
// Performs "zoom in" option for the OSD cluster icon view area. Allows the
|
||||
// user to "zoom in" on a narrower range of nodes until he or she selects a
|
||||
// specific node of interest. Called by guiMonitorOSDClusterIconView by
|
||||
// signal_item_activated.
|
||||
void osdc_cluster_zoom_in(const Gtk::TreeModel::Path& path);
|
||||
|
||||
// Allows user to "zoom out" one level of the OSD cluster view area to obtain
|
||||
// a broader range of nodes until he or she views the overall amount of
|
||||
// nodes. Called by guiMonitorOSDClusterBackButton by signal_clicked
|
||||
void osdc_cluster_back();
|
||||
|
||||
// Allows user to view the broadest range of nodes in the PG cluster. Called
|
||||
// by guiMonitorOSDClusterViewAllButton by signal_clicked.
|
||||
void osdc_cluster_view_all();
|
||||
|
||||
// Allows user to obtain the statistics of the OSD cluster. Called by
|
||||
// guiMonitorOSDClusterStatsButton by signal_clicked.
|
||||
void osdc_cluster_stats();
|
||||
|
||||
// Performs "zoom in" option for the MDS cluster icon view area. Allows the
|
||||
// user to "zoom in" on a narrower range of nodes until he or she selects a
|
||||
// specific node of interest. Called by guiMonitorMDSClusterIconView by
|
||||
// signal_item_activated.
|
||||
void mds_cluster_zoom_in(const Gtk::TreeModel::Path& path);
|
||||
|
||||
// Allows user to "zoom out" one level of the MDS cluster view area to obtain
|
||||
// a broader range of nodes until he or she views the overall amount of
|
||||
// nodes. Called by guiMonitorMDSClusterBackButton by signal_clicked.
|
||||
void mds_cluster_back();
|
||||
|
||||
// Allows user to view the broadest range of nodes in the MDS cluster.
|
||||
// Called by guiMonitorMDSClusterViewAllButton by signal_clicked.
|
||||
void mds_cluster_view_all();
|
||||
|
||||
// Allows user to obtain the statistics of the MDS cluster. Called by
|
||||
// guiMonitorMDSClusterStatsButton by signal_clicked.
|
||||
void mds_cluster_stats();
|
||||
|
||||
// Called when a button is pressed in the "View Node..." dialog box.
|
||||
void handle_view_node_response(int response);
|
||||
|
||||
// Called when a node type is selected in the "View Node..." dialog box.
|
||||
void handle_view_node_change();
|
||||
|
||||
// Called when a button is pressed in the "Send Command..." dialog box.
|
||||
void handle_send_command_response(int response);
|
||||
|
||||
unsigned int pg_cluster_zoom; // current zoom level of the PG cluster view
|
||||
unsigned int osd_cluster_zoom; // current zoom level of the OSD cluster view
|
||||
unsigned int mds_cluster_zoom; // current zoom level of the MDS cluster view
|
||||
|
||||
stack<vector<NodeInfo *> > old_pg_cluster_zoom_states;
|
||||
stack<vector<NodeInfo *> > old_osd_cluster_zoom_states;
|
||||
stack<vector<NodeInfo *> > old_mds_cluster_zoom_states;
|
||||
|
||||
std::vector <std::string> current_up_mds;
|
||||
std::vector <pg_t> current_pgs;
|
||||
|
||||
bool send_command_success; // did "Send Command..." end without errors?
|
||||
bool view_node_success; // did "View Node..." end without errors?"
|
||||
|
||||
GuiMonitorThread *thread;
|
||||
|
||||
///// GUI Elements /////
|
||||
// Main Window
|
||||
Gtk::Window *guiMonitorWindow;
|
||||
|
||||
Gtk::ImageMenuItem *guiMonitorQuitImageMenuItem;
|
||||
Gtk::ImageMenuItem *guiMonitorCopyImageMenuItem;
|
||||
Gtk::MenuItem *guiMonitorSendCommandMenuItem;
|
||||
Gtk::MenuItem *guiMonitorViewNodeMenuItem;
|
||||
Gtk::ImageMenuItem *guiMonitorAboutImageMenuItem;
|
||||
Gtk::TextView *guiMonitorLogTextView;
|
||||
Glib::RefPtr<Gtk::TextBuffer> guiMonitorLogTextBuffer;
|
||||
Gtk::Statusbar *guiMonitorStatusbar;
|
||||
|
||||
// Main Window -- Placement Groups Section
|
||||
Gtk::Label *guiMonitorPGClusterStatsLabel;
|
||||
Gtk::IconView *guiMonitorPGClusterIconView;
|
||||
Glib::RefPtr<Gtk::ListStore> guiMonitorPGClusterIcons;
|
||||
Gtk::Button *guiMonitorPGClusterBackButton;
|
||||
Gtk::Button *guiMonitorPGClusterViewAllButton;
|
||||
Gtk::Button *guiMonitorPGClusterStatsButton;
|
||||
|
||||
// Main Window -- Monitor Cluster Section
|
||||
Gtk::Label *guiMonitorMonitorClusterStatsLabel;
|
||||
Gtk::Button *guiMonitorMonitorClusterStatsButton;
|
||||
Gtk::TreeView *guiMonitorMonitorClusterTreeView;
|
||||
Glib::RefPtr<Gtk::ListStore> guiMonitorMonitorClusterEntries;
|
||||
KeyValueModelColumns monitorColumns;
|
||||
|
||||
// Main Window -- OSD Cluster Section
|
||||
Gtk::Label *guiMonitorOSDClusterStatsLabel;
|
||||
Gtk::IconView *guiMonitorOSDClusterIconView;
|
||||
Glib::RefPtr<Gtk::ListStore> guiMonitorOSDClusterIcons;
|
||||
Gtk::Button *guiMonitorOSDClusterBackButton;
|
||||
Gtk::Button *guiMonitorOSDClusterViewAllButton;
|
||||
Gtk::Button *guiMonitorOSDClusterStatsButton;
|
||||
|
||||
// Main Window -- Metadata Server Section
|
||||
Gtk::Label *guiMonitorMDSClusterStatsLabel;
|
||||
Gtk::IconView *guiMonitorMDSClusterIconView;
|
||||
Glib::RefPtr<Gtk::ListStore> guiMonitorMDSClusterIcons;
|
||||
Gtk::Button *guiMonitorMDSClusterBackButton;
|
||||
Gtk::Button *guiMonitorMDSClusterViewAllButton;
|
||||
Gtk::Button *guiMonitorMDSClusterStatsButton;
|
||||
|
||||
// View Node Dialog
|
||||
Gtk::Dialog *viewNodeDialog;
|
||||
Gtk::Entry *viewNodeNameEntry;
|
||||
Gtk::ComboBox *viewNodeTypeComboBox;
|
||||
Glib::RefPtr<Gtk::ListStore> viewNodeNodeTypeListStore;
|
||||
Gtk::Label *viewNodeNameLabel;
|
||||
ViewNodeOptionColumns viewNodeColumns;
|
||||
|
||||
// Send Command Window
|
||||
Gtk::Dialog *sendCommandDialog;
|
||||
Gtk::Entry *sendCommandPromptEntry;
|
||||
|
||||
// About Dialog
|
||||
Gtk::AboutDialog *guiMonitorAboutDialog;
|
||||
|
||||
// Icons
|
||||
Glib::RefPtr<Gdk::Pixbuf> blacklistIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> clientIcon;
|
||||
//Glib::RefPtr<Gdk::Pixbuf> failedMDSIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> MDSIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> monitorIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> upOSDIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> downOSDIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> outOSDIcon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> PGIcon;
|
||||
//Glib::RefPtr<Gdk::Pixbuf> stoppedMDSIcon;
|
||||
|
||||
NodeIconColumns icon_columns;
|
||||
};
|
||||
|
||||
#endif
|
19
src/tools/gui_resources.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef GUI_RESOURCES_H
|
||||
#define GUI_RESOURCES_H
|
||||
|
||||
/* TODO: Place these in a resource file or some other mechanism */
|
||||
#define GUI_MONITOR_BUILDER_FILE "gui_resources/gui_monitor.build"
|
||||
#define STATS_WINDOW_BUILDER_FILE "gui_resources/stats_window.glade"
|
||||
|
||||
#define BLACKLIST_ICON_PATH "gui_resources/blacklist.svg"
|
||||
#define CLIENT_ICON_PATH "gui_resources/client.svg"
|
||||
#define FAILED_MDS_ICON_PATH "gui_resources/failed_mds.svg"
|
||||
#define MDS_ICON_PATH "gui_resources/mds.svg"
|
||||
#define MONITOR_ICON_PATH "gui_resources/monitor.svg"
|
||||
#define UP_OSD_ICON_PATH "gui_resources/osd.svg"
|
||||
#define DOWN_OSD_ICON_PATH "gui_resources/down_osd.svg"
|
||||
#define OUT_OSD_ICON_PATH "gui_resources/out_osd.svg"
|
||||
#define PG_ICON_PATH "gui_resources/pg.svg"
|
||||
#define STOPPED_MDS_ICON_PATH "gui_resources/stopped_mds.svg"
|
||||
|
||||
#endif
|
224
src/tools/gui_resources/blacklist.svg
Normal file
After Width: | Height: | Size: 41 KiB |
96
src/tools/gui_resources/client.svg
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg3515"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="client.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3517">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective3523" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="16"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata3520">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3525"
|
||||
sodipodi:cx="17.012268"
|
||||
sodipodi:cy="16.059372"
|
||||
sodipodi:rx="9.6000986"
|
||||
sodipodi:ry="9.3321886"
|
||||
d="M 26.612367,16.059372 A 9.6000986,9.3321886 0 1 1 7.4121695,16.059372 A 9.6000986,9.3321886 0 1 1 26.612367,16.059372 z"
|
||||
transform="translate(-1.3395486,-0.7144259)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4036"
|
||||
sodipodi:cx="12.189892"
|
||||
sodipodi:cy="12.621197"
|
||||
sodipodi:rx="1.4735035"
|
||||
sodipodi:ry="1.4288518"
|
||||
d="M 13.663395,12.621197 A 1.4735035,1.4288518 0 1 1 10.716388,12.621197 A 1.4735035,1.4288518 0 1 1 13.663395,12.621197 z"
|
||||
transform="matrix(0.5306128,0,0,0.6721944,5.9896895,3.7354344)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4062"
|
||||
sodipodi:cx="12.189892"
|
||||
sodipodi:cy="12.621197"
|
||||
sodipodi:rx="1.4735035"
|
||||
sodipodi:ry="1.4288518"
|
||||
d="M 13.663395,12.621197 A 1.4735035,1.4288518 0 1 1 10.716388,12.621197 A 1.4735035,1.4288518 0 1 1 13.663395,12.621197 z"
|
||||
transform="matrix(0.5306128,0,0,0.6721944,12.374872,3.7350247)" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 10.537782,17.086359 C 15.092248,21.015701 20.539745,17.175662 20.539745,17.175662"
|
||||
id="path4066" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
102
src/tools/gui_resources/cluster_stats_window.glade
Normal file
@ -0,0 +1,102 @@
|
||||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 2.8 -->
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<object class="GtkWindow" id="statsWindow">
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="statsVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="clusterStatsInfoLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="clusterStatsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="clusterStatsInfoTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="clusterStatsBottomHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="clusterStatsButtonsHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsCopyButton">
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save-as</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsCloseButton">
|
||||
<property name="label" translatable="yes">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
181
src/tools/gui_resources/down_osd.svg
Normal file
After Width: | Height: | Size: 39 KiB |
118
src/tools/gui_resources/failed_mds.svg
Normal file
@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg3327"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="failed_mds.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3329">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective3335" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9180417"
|
||||
inkscape:cx="-11.684466"
|
||||
inkscape:cy="21.927714"
|
||||
inkscape:current-layer="svg3327"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata3332">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 18.656491,25.047041 L 27.72077,19.956756 L 27.72077,19.956756 L 27.72077,19.956756"
|
||||
id="path3461" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 18.745794,24.779131 L 18.745794,13.16971 L 18.745794,13.16971"
|
||||
id="path3463" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 9.8154699,11.160387 L 18.879749,13.526923"
|
||||
id="path3465" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 18.656579,13.526923 L 27.720858,8.4366372 L 27.720858,8.4366372 L 27.720858,8.4366372"
|
||||
id="path3467" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02936888px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 27.497512,8.0197056 L 27.497512,20.462992"
|
||||
id="path3469" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 10.195009,11.160387 L 19.259288,6.0701016 L 19.259288,6.0701016 L 19.259288,6.0701016"
|
||||
id="path3471" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01581013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 10.261986,23.200389 L 10.261986,11.220973 L 10.261986,11.220973"
|
||||
id="path3473" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 9.8824473,22.524224 L 18.946726,24.89076"
|
||||
id="path3475" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.97621411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 18.934833,6.169838 L 27.487079,8.5601597"
|
||||
id="path3477" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 19.287403,18.922886 L 19.287403,13.770547 L 23.090962,11.633509 C 25.182922,10.458139 26.911024,9.4897458 26.931189,9.4815255 C 26.951354,9.4733047 26.962749,11.790012 26.956507,14.629762 L 26.945156,19.792944 L 23.132939,21.934085 C 21.036223,23.111713 19.313228,24.075226 19.304065,24.075226 C 19.294899,24.075226 19.287403,21.756673 19.287403,18.922886 L 19.287403,18.922886 z"
|
||||
id="path3479" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 14.476191,23.190934 L 10.803595,22.227498 L 10.803595,17.096228 L 10.803595,11.964955 L 10.926387,11.994404 C 11.194689,12.05875 17.762229,13.771129 17.981343,13.83387 L 18.215764,13.900993 L 18.215764,19.032762 C 18.215764,21.855234 18.200695,24.162243 18.182276,24.159449 C 18.163857,24.156654 16.496119,23.720823 14.476191,23.190933 L 14.476191,23.190934 z"
|
||||
id="path3481" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 14.992359,11.982284 C 13.059856,11.474631 11.492584,11.046224 11.509532,11.030268 C 11.526481,11.014313 13.244667,10.044573 15.327725,8.8752922 L 19.115103,6.7493259 L 22.583613,7.7163058 C 24.491295,8.2481441 26.066515,8.6957838 26.084103,8.7110604 C 26.12934,8.7503543 18.753688,12.884321 18.61782,12.895824 C 18.55632,12.901031 16.924862,12.489938 14.992359,11.982285 L 14.992359,11.982284 z"
|
||||
id="path3483" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 4.293991,12.550747 L 15.281556,26.569364"
|
||||
id="path3336" />
|
||||
<path
|
||||
style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 4.0414033,26.569364 L 14.397499,13.182216"
|
||||
id="path3338" />
|
||||
</svg>
|
After Width: | Height: | Size: 6.1 KiB |
804
src/tools/gui_resources/gui_monitor.build
Normal file
@ -0,0 +1,804 @@
|
||||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="2.16"/>
|
||||
<!-- interface-naming-policy toplevel-contextual -->
|
||||
<object class="GtkWindow" id="guiMonitorWindow">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">Ceph Monitor</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object class="GtkMenuBar" id="guiMonitorMenuBar">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorFileMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_File</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorFileMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorQuitImageMenuItem">
|
||||
<property name="label">gtk-quit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorEditMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Edit</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorEditMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorCopyImageMenuItem">
|
||||
<property name="label">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorCephMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Ceph</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorCephMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorSendCommandMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Send Command...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorViewNodeMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_View Node...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorHelpMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Help</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorHelpMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorAboutImageMenuItem">
|
||||
<property name="label">gtk-about</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTable" id="guiMonitorCephInfoTable">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorPGClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorPGClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Placement Groups:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorPGClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorPGClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorPGClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorPGClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterStatsButton">
|
||||
<property name="label" translatable="yes">Placement Group Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorMonitorClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMonitorClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Monitors:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMonitorClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorMonitorClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="guiMonitorMonitorClusterTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="rules_hint">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMonitorClusterStatsButton">
|
||||
<property name="label" translatable="yes">Monitor Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorOSDClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorOSDClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">OSDs:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorOSDClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorOSDClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorOSDClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorOSDClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterStatsButton">
|
||||
<property name="label" translatable="yes">OSD Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorMDSClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMDSClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Metadata Servers:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMDSClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorMDSClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorMDSClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorMDSClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterStatsButton">
|
||||
<property name="label" translatable="yes">Metadata Server Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorLogVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorLogLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Log:</property>
|
||||
<property name="justify">fill</property>
|
||||
<property name="wrap_mode">word-char</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorLogScrolledWindow">
|
||||
<property name="height_request">70</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="guiMonitorLogTextView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="wrap_mode">word</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStatusbar" id="guiMonitorStatusbar">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkAboutDialog" id="guiMonitorAboutDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">About Ceph Monitor</property>
|
||||
<property name="resizable">False</property>
|
||||
<property name="window_position">center-on-parent</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="icon_name">monitor</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<property name="program_name">Ceph Monitor</property>
|
||||
<property name="version">0.1</property>
|
||||
<property name="copyright" translatable="yes">(c) 2009 Michael McThrow
|
||||
All rights reserved</property>
|
||||
<property name="comments" translatable="yes">Monitoring tool for the Ceph distributed file system</property>
|
||||
<property name="website">http://ceph.newdream.net</property>
|
||||
<property name="website_label" translatable="yes">Ceph website</property>
|
||||
<property name="authors">Author: Michael McThrow
|
||||
Based on code written by Sage Weil and other contributors.</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="guiMonitorAboutVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="guiMonitorAboutButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkDialog" id="viewNodeDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">View Node...</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="window_position">center</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="viewNodeMainVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="viewNodeOptionVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeWhichNodeLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Which node would you like to view?</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="viewNodeTypeHBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeTypeLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">_Type of Node</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">viewNodeTypeComboBox</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="viewNodeTypeComboBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="has_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="text"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="viewNodeNameHBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeNameLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">_Node ID</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">viewNodeNameEntry</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="viewNodeNameEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="caps_lock_warning">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="viewNodeHButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="viewNodeCancelButton">
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="viewNodeOkButton">
|
||||
<property name="label" translatable="yes">gtk-ok</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-6">viewNodeCancelButton</action-widget>
|
||||
<action-widget response="-5">viewNodeOkButton</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
<object class="GtkDialog" id="sendCommandDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">Send Command...</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="default_width">400</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="sendCommandMainVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="sendCommandAreaVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="sendCommandPromptLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">_Please enter a Ceph command:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">sendCommandPromptEntry</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="sendCommandPromptEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="has_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="sendCommandHButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="sendCommandCancelButton">
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="sendCommandRunButton">
|
||||
<property name="label" translatable="yes">_Run</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-6">sendCommandCancelButton</action-widget>
|
||||
<action-widget response="-5">sendCommandRunButton</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
970
src/tools/gui_resources/gui_monitor.glade
Normal file
@ -0,0 +1,970 @@
|
||||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="2.16"/>
|
||||
<!-- interface-naming-policy toplevel-contextual -->
|
||||
<object class="GtkListStore" id="viewNodeNodeTypeListStore">
|
||||
<columns>
|
||||
<!-- column-name viewNodeNodeType -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">OSD</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Metadata server</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Placement group</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Monitor</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkWindow" id="guiMonitorWindow">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">Ceph Monitor</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object class="GtkMenuBar" id="guiMonitorMenuBar">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorFileMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_File</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorFileMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorQuitImageMenuItem">
|
||||
<property name="label">gtk-quit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorEditMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Edit</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorEditMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorCopyImageMenuItem">
|
||||
<property name="label">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorCephMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Ceph</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorCephMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorSendCommandMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Send Command...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorViewNodeMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_View Node...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="guiMonitorHelpMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Help</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="guiMonitorHelpMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="guiMonitorAboutImageMenuItem">
|
||||
<property name="label">gtk-about</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTable" id="guiMonitorCephInfoTable">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorPGClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorPGClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Placement Groups:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorPGClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorPGClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorPGClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorPGClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorPGClusterStatsButton">
|
||||
<property name="label" translatable="yes">Placement Group Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorMonitorClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMonitorClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Monitors:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMonitorClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorMonitorClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="guiMonitorMonitorClusterTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMonitorClusterStatsButton">
|
||||
<property name="label" translatable="yes">Monitor Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorOSDClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorOSDClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">OSDs:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorOSDClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorOSDClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorOSDClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorOSDClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorOSDClusterStatsButton">
|
||||
<property name="label" translatable="yes">OSD Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorMDSClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMDSClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Metadata Servers:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorMDSClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorMDSClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkIconView" id="guiMonitorMDSClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="guiMonitorMDSClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterBackButton">
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterViewAllButton">
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="guiMonitorMDSClusterStatsButton">
|
||||
<property name="label" translatable="yes">Metadata Server Cluster Stats...</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkVBox" id="guiMonitorLogVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="guiMonitorLogLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Log:</property>
|
||||
<property name="justify">fill</property>
|
||||
<property name="wrap_mode">word-char</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="guiMonitorLogScrolledWindow">
|
||||
<property name="height_request">70</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="guiMonitorLogTextView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStatusbar" id="guiMonitorStatusbar">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkAboutDialog" id="guiMonitorAboutDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">About Ceph Monitor</property>
|
||||
<property name="resizable">False</property>
|
||||
<property name="window_position">center-on-parent</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="icon_name">monitor</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<property name="program_name">Ceph Monitor</property>
|
||||
<property name="version">0.1</property>
|
||||
<property name="copyright" translatable="yes">(c) 2009 Michael McThrow
|
||||
All rights reserved</property>
|
||||
<property name="comments" translatable="yes">Monitoring tool for the Ceph distributed file system</property>
|
||||
<property name="website">http://ceph.newdream.net</property>
|
||||
<property name="website_label" translatable="yes">Ceph website</property>
|
||||
<property name="authors">Main Author: Michael McThrow
|
||||
Portions of the code for the Ceph Monitor were written by Sage Weil and other contributors of the Ceph distributed file system.</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="guiMonitorAboutVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="guiMonitorAboutButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkWindow" id="clusterStatsWindow">
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="clusterStatsVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="clusterStatsInfoLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="clusterStatsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="clusterStatsInfoTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="clusterStatsBottomHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="clusterStatsButtonsHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsCopyButton">
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save-as</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="clusterStatsCloseButton">
|
||||
<property name="label" translatable="yes">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkWindow" id="nodeStatsWindow">
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="nodeStatsVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="nodeStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="nodeStatsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="nodeStatsInfoTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="nodeStatsBottomHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="nodeStatsButtonsHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsCopyButton">
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save-as</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsCloseButton">
|
||||
<property name="label" translatable="yes">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkFileChooserDialog" id="saveFileChooserDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="type">popup</property>
|
||||
<property name="title" translatable="yes">Save File</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="window_position">center-on-parent</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<property name="action">save</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="saveVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="saveActionsHButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="saveCancelButton">
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="saveSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-6">saveCancelButton</action-widget>
|
||||
<action-widget response="-5">saveSaveButton</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
<object class="GtkDialog" id="viewNodeDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="type_hint">normal</property>
|
||||
<property name="has_separator">False</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="viewNodeMainVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="viewNodeOptionVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeWhichNodeLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Which node would you like to view?</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="viewNodeTypeHBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeTypeLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Type of Node</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="viewNodeTypeComboBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="model">viewNodeNodeTypeListStore</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="viewNodeNameHBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="viewNodeNameLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Node Name</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="viewNodeNameEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="caps_lock_warning">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="viewNodeHButtonBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="viewNodeCancelButton">
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="viewNodeOkButton">
|
||||
<property name="label" translatable="yes">gtk-ok</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="5">viewNodeCancelButton</action-widget>
|
||||
<action-widget response="4">viewNodeOkButton</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
1027
src/tools/gui_resources/gui_monitor_old.glade
Normal file
591
src/tools/gui_resources/main-window.glade
Normal file
@ -0,0 +1,591 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.4.5 on Mon Nov 2 05:39:40 2009 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkWindow" id="guiMonitorWindow">
|
||||
<property name="title" translatable="yes">Ceph Monitor</property>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="mainVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<widget class="GtkMenuBar" id="menuBar">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="fileMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_File</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="fileMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="quitImageMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">gtk-quit</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="editMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Edit</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="cephMenu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="imagemenuitem7">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="cephMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Ceph</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="cephMen">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="sendCommandMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Send Command...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="viewNodeMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_View Node...</property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="helpMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Help</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu3">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="aboutMenuItem">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">gtk-about</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkTable" id="cephInfoTable">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">3</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="column_spacing">20</property>
|
||||
<property name="row_spacing">20</property>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="monitorClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="monitorClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Monitors:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="monitorClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="monitorClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkIconView" id="monitorClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="monitorClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="monitorClusterBackButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="monitorClusterViewAllButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="PGClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="PGClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Placement Groups:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="PGClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="PGClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkIconView" id="PGClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="PGClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="PGClusterBackButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="PGClusterViewAllButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="clientsVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="clientsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Clients:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="clientsStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="clientsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkIconView" id="clientsIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="clientsButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="clientsBackButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="clientsViewAllButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="MDSClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="MDSClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Metadata Servers:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="MDSClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="MDSClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkIconView" id="MDSClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="MDSClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="MDSClusterBackButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="MDSClusterViewAllButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="OSDClusterVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="OSDClusterLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">OSDs:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="OSDClusterStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="OSDClusterScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkIconView" id="OSDClusterIconView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="OSDClusterButtonHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="OSDClusterBackButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">Back</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="OSDClusterViewAllButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">View All</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="summaryVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="summaryLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Summary:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="logVBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="logLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="label" translatable="yes">Log:</property>
|
||||
<property name="justify">GTK_JUSTIFY_FILL</property>
|
||||
<property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="logScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkTextView" id="logTextView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<widget class="GtkWindow" id="window1">
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
110
src/tools/gui_resources/mds.svg
Normal file
@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg3327"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="mds.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3329">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective3335" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.395604"
|
||||
inkscape:cx="16"
|
||||
inkscape:cy="18.74316"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata3332">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 14.109912,23.784102 L 23.174191,18.693817 L 23.174191,18.693817 L 23.174191,18.693817"
|
||||
id="path3461" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 14.199215,23.516192 L 14.199215,11.906771 L 14.199215,11.906771"
|
||||
id="path3463" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 5.2688912,9.8974481 L 14.33317,12.263984"
|
||||
id="path3465" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 14.11,12.263984 L 23.174279,7.1736987 L 23.174279,7.1736987 L 23.174279,7.1736987"
|
||||
id="path3467" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02936888px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 22.950933,6.7567671 L 22.950933,19.200053"
|
||||
id="path3469" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 5.6484299,9.8974484 L 14.712709,4.8071631 L 14.712709,4.8071631 L 14.712709,4.8071631"
|
||||
id="path3471" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01581013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 5.7154074,21.93745 L 5.7154074,9.9580345 L 5.7154074,9.9580345"
|
||||
id="path3473" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 5.3358686,21.261285 L 14.400147,23.627821"
|
||||
id="path3475" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.97621411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 14.388254,4.9068995 L 22.9405,7.2972212"
|
||||
id="path3477" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 14.740824,17.659947 L 14.740824,12.507608 L 18.544383,10.37057 C 20.636343,9.1952001 22.364445,8.2268073 22.38461,8.218587 C 22.404775,8.2103662 22.41617,10.527073 22.409928,13.366823 L 22.398577,18.530005 L 18.58636,20.671146 C 16.489644,21.848774 14.766649,22.812287 14.757486,22.812287 C 14.74832,22.812287 14.740824,20.493734 14.740824,17.659947 L 14.740824,17.659947 z"
|
||||
id="path3479" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 9.9296123,21.927995 L 6.2570165,20.964559 L 6.2570165,15.833289 L 6.2570165,10.702016 L 6.3798085,10.731465 C 6.6481098,10.795811 13.21565,12.50819 13.434764,12.570931 L 13.669185,12.638054 L 13.669185,17.769823 C 13.669185,20.592295 13.654116,22.899304 13.635697,22.89651 C 13.617278,22.893715 11.94954,22.457884 9.9296123,21.927994 L 9.9296123,21.927995 z"
|
||||
id="path3481" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 10.44578,10.719345 C 8.5132772,10.211692 6.9460053,9.7832851 6.9629537,9.7673293 C 6.9799021,9.7513744 8.6980884,8.7816345 10.781146,7.6123537 L 14.568524,5.4863874 L 18.037034,6.4533673 C 19.944716,6.9852056 21.519936,7.4328453 21.537524,7.4481219 C 21.582761,7.4874158 14.207109,11.621382 14.071241,11.632885 C 14.009741,11.638092 12.378283,11.226999 10.44578,10.719346 L 10.44578,10.719345 z"
|
||||
id="path3483" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.6 KiB |
92
src/tools/gui_resources/monitor.svg
Normal file
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg4068"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="monitor.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4070">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective4076" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="0.10402327"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata4073">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4629"
|
||||
width="28.041218"
|
||||
height="27.416094"
|
||||
x="1.9646713"
|
||||
y="2.0834146" />
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.96407133000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4631"
|
||||
width="22.004526"
|
||||
height="21.379402"
|
||||
x="4.983017"
|
||||
y="5.5482764" />
|
||||
<path
|
||||
style="opacity:1;fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.08930324;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 2.4794895,15.776742 L 2.4794895,2.604514 L 15.964279,2.604514 L 29.449068,2.604514 L 29.449068,15.776742 L 29.449068,28.94897 L 15.964279,28.94897 L 2.4794895,28.94897 L 2.4794895,15.776742 z M 27.484397,16.223258 L 27.484397,5.0157015 L 15.964279,5.0157015 L 4.4441607,5.0157015 L 4.4441607,16.223258 L 4.4441607,27.430815 L 15.964279,27.430815 L 27.484397,27.430815 L 27.484397,16.223258 z"
|
||||
id="path4633" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#00f00f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
|
||||
d="M 4.465162,18.515211 L 10.805692,8.4239446"
|
||||
id="path4639" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 10.805692,8.6918543 L 16.342493,22.980373"
|
||||
id="path4641" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 16.25319,22.89107 L 20.986261,13.24632 L 27.416095,18.068695 L 27.416095,18.068695"
|
||||
id="path4643" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
102
src/tools/gui_resources/node_stats_window.glade
Normal file
@ -0,0 +1,102 @@
|
||||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 2.8 -->
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<object class="GtkWindow" id="nodeStatsWindow">
|
||||
<property name="border_width">5</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="nodeStatsVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="nodeStatsLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="nodeStatsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="nodeStatsInfoTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="nodeStatsBottomHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="nodeStatsButtonsHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsCopyButton">
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save-as</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="nodeStatsCloseButton">
|
||||
<property name="label" translatable="yes">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
181
src/tools/gui_resources/osd.svg
Normal file
After Width: | Height: | Size: 39 KiB |
185
src/tools/gui_resources/out_osd.svg
Normal file
After Width: | Height: | Size: 41 KiB |
111
src/tools/gui_resources/pg.svg
Normal file
@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg4645"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="pg.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4647">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective4653" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="0.10402327"
|
||||
inkscape:cy="12.42787"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata4650">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffb380;fill-opacity:1;stroke:#000000;stroke-width:0.51228672;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4655"
|
||||
width="28.028931"
|
||||
height="27.761021"
|
||||
x="1.9708146"
|
||||
y="2.2681644" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44339502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5166"
|
||||
width="9.5227489"
|
||||
height="6.9329543"
|
||||
x="5.1512856"
|
||||
y="4.019784" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44339502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5168"
|
||||
width="9.5227489"
|
||||
height="6.9329543"
|
||||
x="5.0619822"
|
||||
y="12.905456" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44609264;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5178"
|
||||
width="9.520051"
|
||||
height="7.0195599"
|
||||
x="17.74439"
|
||||
y="3.9764812" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44339502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5180"
|
||||
width="9.5227489"
|
||||
height="6.9329543"
|
||||
x="17.653738"
|
||||
y="12.905456" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44339502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5182"
|
||||
width="9.5227489"
|
||||
height="6.9329543"
|
||||
x="5.0619822"
|
||||
y="20.942747" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.44339502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5184"
|
||||
width="9.5227489"
|
||||
height="6.9329543"
|
||||
x="17.564436"
|
||||
y="21.032051" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
159
src/tools/gui_resources/stats_window.glade
Normal file
@ -0,0 +1,159 @@
|
||||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 2.8 -->
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<object class="GtkWindow" id="statsWindow">
|
||||
<property name="border_width">5</property>
|
||||
<property name="default_width">350</property>
|
||||
<property name="default_height">500</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<child>
|
||||
<object class="GtkVBox" id="statsVBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="statsInfoLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="statsScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="statsInfoTreeView">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_clickable">False</property>
|
||||
<property name="rules_hint">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="statsBottomHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="statsButtonsHBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="statsCopyButton">
|
||||
<property name="label" translatable="yes">gtk-copy</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="statsCloseButton">
|
||||
<property name="label" translatable="yes">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkFileChooserDialog" id="saveFileChooserDialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="type">popup</property>
|
||||
<property name="title" translatable="yes">Save File</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="window_position">center-on-parent</property>
|
||||
<property name="destroy_with_parent">True</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="has_separator">False</property>
|
||||
<property name="action">save</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="dialog-vbox5">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="dialog-action_area5">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="saveCancelButton">
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="saveSaveButton">
|
||||
<property name="label" translatable="yes">gtk-save</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-6">saveCancelButton</action-widget>
|
||||
<action-widget response="-5">saveSaveButton</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
120
src/tools/gui_resources/stopped_mds.svg
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32px"
|
||||
height="32px"
|
||||
id="svg3327"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="stopped_mds.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3329">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective3335" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.598901"
|
||||
inkscape:cx="-15.791953"
|
||||
inkscape:cy="18.74316"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata3332">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 20.003926,24.677134 L 29.068205,19.586849 L 29.068205,19.586849 L 29.068205,19.586849"
|
||||
id="path3461" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 20.093229,24.409224 L 20.093229,12.799803 L 20.093229,12.799803"
|
||||
id="path3463" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 11.162905,10.79048 L 20.227184,13.157016"
|
||||
id="path3465" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 20.004014,13.157016 L 29.068293,8.0667311 L 29.068293,8.0667311 L 29.068293,8.0667311"
|
||||
id="path3467" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02936888px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 28.844947,7.6497995 L 28.844947,20.093085"
|
||||
id="path3469" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 11.542444,10.790481 L 20.606723,5.7001955 L 20.606723,5.7001955 L 20.606723,5.7001955"
|
||||
id="path3471" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01581013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 11.609421,22.830482 L 11.609421,10.851067 L 11.609421,10.851067"
|
||||
id="path3473" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 11.229882,22.154317 L 20.294161,24.520853"
|
||||
id="path3475" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.97621411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 20.282268,5.7999319 L 28.834514,8.1902536"
|
||||
id="path3477" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 20.634838,18.552979 L 20.634838,13.40064 L 24.438397,11.263602 C 26.530357,10.088232 28.258459,9.1198397 28.278624,9.1116194 C 28.298789,9.1033986 28.310184,11.420105 28.303942,14.259855 L 28.292591,19.423037 L 24.480374,21.564178 C 22.383658,22.741806 20.660663,23.705319 20.6515,23.705319 C 20.642334,23.705319 20.634838,21.386766 20.634838,18.552979 L 20.634838,18.552979 z"
|
||||
id="path3479" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 15.823626,22.821027 L 12.15103,21.857591 L 12.15103,16.726321 L 12.15103,11.595048 L 12.273822,11.624497 C 12.542124,11.688843 19.109664,13.401222 19.328778,13.463963 L 19.563199,13.531086 L 19.563199,18.662855 C 19.563199,21.485327 19.54813,23.792336 19.529711,23.789542 C 19.511292,23.786747 17.843554,23.350916 15.823626,22.821026 L 15.823626,22.821027 z"
|
||||
id="path3481" />
|
||||
<path
|
||||
style="fill:#ff8080;fill-opacity:1;stroke:#00ffff;stroke-width:0.00446516;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
|
||||
d="M 16.339794,11.612377 C 14.407291,11.104724 12.840019,10.676317 12.856968,10.660362 C 12.873916,10.644407 14.592102,9.6746669 16.67516,8.5053861 L 20.462538,6.3794198 L 23.931048,7.3463997 C 25.83873,7.878238 27.41395,8.3258777 27.431538,8.3411543 C 27.476775,8.3804482 20.101123,12.514414 19.965255,12.525917 C 19.903755,12.531124 18.272297,12.120031 16.339794,11.612378 L 16.339794,11.612377 z"
|
||||
id="path3483" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3438"
|
||||
sodipodi:cx="11.609421"
|
||||
sodipodi:cy="17.890089"
|
||||
sodipodi:rx="4.4651618"
|
||||
sodipodi:ry="4.1079493"
|
||||
d="M 16.074583,17.890089 A 4.4651618,4.1079493 0 1 1 7.144259,17.890089 A 4.4651618,4.1079493 0 1 1 16.074583,17.890089 z"
|
||||
transform="translate(-1.2502454,-0.7144259)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.1 KiB |