void DocumentView::apply_settings(const unicode& mimetype) { L_INFO(_u("Applying settings for: ") + mimetype); view_.set_left_margin(4); view_.set_right_margin(4); view_.set_show_line_marks(true); view_.set_smart_home_end(Gsv::SMART_HOME_END_AFTER); view_.set_show_right_margin(); view_.set_right_margin_position(80); //Load any settings from the settings file json::JSON default_settings = window_.settings()["default"]; if(window_.settings().has_key(mimetype)) { default_settings.update(window_.settings()[mimetype]); } view_.set_show_line_numbers(default_settings["show_line_numbers"].get_bool()); view_.set_auto_indent(default_settings["auto_indent"].get_bool()); if(!default_settings["detect_indentation"].get_bool()) { detect_and_apply_indentation(); } Gsv::DrawSpacesFlags flags; if(default_settings["draw_whitespace_spaces"].get_bool()) { flags |= Gsv::DRAW_SPACES_SPACE; } if(default_settings["draw_whitespace_tabs"].get_bool()) { flags |= Gsv::DRAW_SPACES_TAB; } view_.set_draw_spaces(flags); view_.set_highlight_current_line(default_settings["highlight_current_line"].get_bool()); //Load any font setting overrides Pango::FontDescription fdesc; auto font_details = get_font_name_and_size_from_dconf(); fdesc.set_family(font_details.first.encode()); fdesc.set_size(font_details.second); if(default_settings.has_key("override_font_family")) { fdesc.set_family(default_settings["override_font_family"].get().encode()); } if(default_settings.has_key("override_font_size")) { fdesc.set_size(default_settings["override_font_size"].get_number() * PANGO_SCALE); } view_.override_font(fdesc); current_settings_ = default_settings; }
void List::draw_label_helper(const Cairo::RefPtr<Cairo::Context> & cr, ListNode * label, const char * text, int x, int y, LabelArrowPos arrowPos) { cr->set_source_rgb(0.0, 0.0, 0.0); Pango::FontDescription font; font.set_family("Monospace"); font.set_weight(Pango::WEIGHT_BOLD); Glib::RefPtr<Pango::Layout> layout = create_pango_layout(text); layout->set_font_description(font); int text_w, text_h; layout->get_pixel_size(text_w, text_h); cr->move_to(x, y); layout->show_in_cairo_context(cr); if (label != NULL) { if (arrowPos == RIGHT) { draw_arrow_helper(cr, x + text_w + 10, y + text_h / 2, label->x - 10, label->y + ListNode::field_h); } else { draw_arrow_helper(cr, x - 10, y + text_h / 2, label->x + ListNode::field_w + 10, label->y + ListNode::field_h); } } else { if (arrowPos == RIGHT) { draw_null_arrow(cr, x + text_w + 10, y + text_h / 2, true); } else { draw_null_arrow(cr, x - 10, y + text_h / 2, false); } } }
void ListNode::draw_text(const Cairo::RefPtr<Cairo::Context> & cr, int x, int y) { char * str = new char[10]; sprintf(str, "%d", data); Pango::FontDescription font; font.set_family("Monospace"); font.set_weight(Pango::WEIGHT_BOLD); Glib::RefPtr<Pango::Layout> layout = create_pango_layout(str); layout->set_font_description(font); int text_w, text_h; layout->get_pixel_size(text_w, text_h); cr->move_to(x + (field_w - text_w) / 2, y + (field_h - text_h) / 2); layout->show_in_cairo_context(cr); }
bool GraficoDeTorta::dibujar(const Cairo::RefPtr<Cairo::Context>& contexto){ Gdk::Rectangle rect = dibujo->get_allocation(); Pango::FontDescription font; font.set_family("Monospace"); font.set_weight(Pango::WEIGHT_BOLD); if(stock.size() == 0) return false; contexto->set_source_rgb(1.0,1.0,1.0); contexto->paint(); int total = 0; for(unsigned int i = 0; i < stock.size(); i++){ total += stock[i].second; } float step = 2*M_PI/total; total = 0; float angulo0=0; for(unsigned int i = 0; i < stock.size(); i++){ float angulo1 = step*stock[i].second + angulo0; dibujarArco(contexto,rect.get_width()/2-rect.get_width()/4,rect.get_height()/2,rect.get_width()<rect.get_height()?rect.get_width()/4:rect.get_height()/4,angulo0,angulo1,red[i],green[i],blue[i]); angulo0 = angulo1; } Glib::RefPtr<Pango::Layout> layout; std::stringstream s; for(unsigned int i = 0; i < stock.size(); i++){ s.str(""); s << stock[i].first << "\t" << stock[i].second; layout = dibujo->create_pango_layout(s.str()); layout -> set_font_description(font); int t_width, t_height; layout->get_pixel_size(t_width,t_height); contexto->set_source_rgb(0,0,0); contexto -> move_to((rect.get_width())/2,15*(i+1)+5); layout -> show_in_cairo_context(contexto); contexto -> set_source_rgb(red[i],green[i],blue[i]); contexto -> rectangle(rect.get_width()/2+80,15*(i+1)+5,30,15); contexto -> fill(); } return true; }
/** Constructor, it will create a new script in order to run run the selected script with the given parameters. It will create a temporary M file containing - The parameters needed - a cd command to go in the right directory - a call to the program - a final printf to warn that everything is done - a 'pause' call so that octave will close when we kill its process. and then runs the job scheduler on the server. \param basescript basename of the script (without .m) \param currentScript Descriptor of the script you want to launch \param p Vector of parameter \param session SSH session */ ScriptRemoteExecWindow::ScriptRemoteExecWindow(std::string basescript, ScriptDescriptor currentScript, std::vector<Parameter> p, ssh_session session) { set_title(currentScript.getName() + " [remote]"); //set_position(Gtk::WIN_POS_CENTER); set_resizable(true); set_default_size(500,500); set_size_request(500,500); SSHSession = session; // Layout mainLayout = Gtk::manage(new Gtk::VBox()); // TextView logTextView = Gtk::manage(new Gtk::TextView()); logBuffer = Gtk::TextBuffer::create(); logTextView->set_buffer(logBuffer); Pango::FontDescription fdesc; fdesc.set_family("monospace"); fdesc.set_size(10 * PANGO_SCALE); logTextView->override_font(fdesc); logTextView->set_editable(false); // Buttons stopButton = Gtk::manage(new Gtk::Button(Gtk::Stock::OK)); //Création d'un conteneur ayant des barres de défilement. scrolledWindow = Gtk::manage(new Gtk::ScrolledWindow()); scrolledWindow->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); scrolledWindow->add(*logTextView); mainLayout->add(*scrolledWindow); mainLayout->pack_end(*stopButton, Gtk::PACK_SHRINK); stopButton->signal_clicked().connect(sigc::mem_fun(*this, &ScriptRemoteExecWindow::stopScript)); this->signal_hide().connect(sigc::mem_fun(*this, &ScriptRemoteExecWindow::stopScript)); timer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &ScriptRemoteExecWindow::onTimer), 1000); add(*mainLayout); show_all(); // All will be put in an igafemtmp directory string base = random_string(10); string fname = "igafemtmp/" + base + "/script.m"; string jname = "igafemtmp/" + base + "/job.sh"; string xmlname = "igafemtmp/" + base + "/job.xml"; string output = "igafemtmp/" + base + "/output"; createDirectory("igafemtmp"); createDirectory("igafemtmp/" + base); ostringstream out(""); ostringstream sc("");//The script ostringstream job(""); //The job ostringstream xml(""); //The xml file xml << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; xml << "<job>" << endl; xml << "\t<script>" << currentScript.getName() << "</script>" << endl; xml << "\t<desc>" << currentScript.getDescription() << "</desc>" << endl; xml << "\t<submitted>" << getTime() << "</submitted>" << endl; xml << "</job>" << endl; job << "" "#!/bin/bash --login" << endl << \ "#BSUB -x # give this job exclusive access" << endl << \ "#BSUB -n 1 # give this job 1 core" << endl << \ "#BSUB -o " << output << ".stdout # put the output stream here" << endl << \ "#BSUB -e " << output << ".stderr # put the error stream here" << endl << \ "#BSUB -J " << base << " # give the job a name" << endl << \ "#BSUB -W 03:00 # run the job for no more than 3 hours" << endl << \ "#BSUB -R \"span[ptile=12]\" # fully populate the node" << endl << \ "#BSUB -q q_cf_htc_work # run on the cardiff htc system" << endl << \ "" << endl << \ "# Load the Environment" << endl << \ "module purge # purge any loaded modules" << endl << \ "module load lapack/3.4.2-gnu-4.6.2 octave # Loading octave" << endl << \ "# Run the Program" << endl << \ "octave ~/" << fname << endl; out << "---------------------------------------------" << endl; out << "> Exporting the variables to the script" << endl; out << "---------------------------------------------" << endl; out << " Name | Value " << endl; out << "---------------------------------------------" << endl; for(unsigned int i = 0; i < p.size(); i++) { out << setw(21) << right << p.at(i).name << right << " |" << setw(21) << p.at(i).value << endl; } out << "---------------------------------------------" << endl; sc << "clear all;" << endl; sc << "restoredefaultpath();" << endl; sc << "igaoutputroot = '" << executeRemoteCommand("echo -n $HOME") << "/igafemtmp/" << base << "'" << endl; //if(currentScript.getGeometryDirectory() != "") sc << "cd " + basescript + "/" + currentScript.getGeometryDirectory() << endl; if(currentScript.getGeometry() != "") sc << currentScript.getGeometry() << endl; sc << "cd " + basescript + "/" + currentScript.getDirectory() << endl; for(unsigned int i = 0; i < p.size(); i++) { // Export variables ! sc << p.at(i).name << " = " << p.at(i).value << ";" << endl; } sc << currentScript.getName() << endl; sc << "printf('---------------------------------------------\\n')" << endl; sc << "printf(' SCRIPT HAS ENDED \\n')" << endl; sc << "printf('---------------------------------------------\\n')" << endl; out << "> Writing the script file" << endl; createFile(fname, sc.str(), out); out << "> Writing the job file" << endl; createFile(jname, job.str(), out); out << "> Writing the XML job info file" << endl; createFile(xmlname, xml.str(), out); out << "---------------------------------------------" << endl; ostringstream cmd(""); cmd << "source /etc/profile.d/lsf.sh && bsub < "; cmd << "igafemtmp/" + base + "/job.sh && mv "; cmd << "igafemtmp/" + base + "/job.sh "; cmd << "igafemtmp/" + base + "/jobSubmitted.sh;" << endl; out << executeRemoteCommand(cmd.str()) << endl; logBuffer->set_text(out.str()); }