Archive

Posts Tagged ‘c’

GKrellM in PgUp/PgDown

March 7th, 2009 No comments

To bo še en (tokrat dvovrstični) kratek popravek. Tisti, ki uporabljatte GKrellM in velikokrat uporabljate tudi tipki PageUp in PageDown, ste najbrž opazili, da če je gkrellm (ne da se mi več pisat velkih začetnic) aktivno okno, da PageUp/Down spremeni temo. Če imaš nastavljeno kako invisible (beri prozorno) temo, se sprememba teme zelo pozna, in je precej moteča. Ker pa so bližnjice hardcodeane v program, se tega ne da spremeniti na enostaven način... zato bomo malo popravljali source.

Ko razpakiraš .tar.bz2 arhiv, se v mapi "src" nahaja datoteka "gui.c". Malo za 2440. vrstico se nahaja naslednja funkcija:

static GtkItemFactoryEntry      menu_items[] =
        {
{"/-",                             NULL,        NULL,                                   0, ""},
{N_("/Configuration"), "F1",    create_config_window,   0, ""},
{N_("/Theme/Prev"), "Page_Up",  cb_load_theme,  THEME_ALT_PREV, ""},
{N_("/Theme/Next"), "Page_Down", cb_load_theme, THEME_ALT_NEXT, ""},
{"/-",                             NULL,        NULL,                                   0, ""},
{N_("/Quit"),              NULL,        gtk_main_quit,                  0, ""},
{"/-",                             NULL,        NULL,                                   0, ""},
        };

Vse kar je treba, je popraviti ta "Page_Up" v " "<shift>Page_Up", in isto  "Page_Down"  v "<shift>Page_Down"

Patch bi torej izgledal približno takole:

diff -Naur gkrellm-2.3.0/src/gui.c gkrellm-2.3.0-mlz/src/gui.c
--- gkrellm-2.3.1/src/gui.c     2007-07-20 18:47:32.000000000 +0200
+++ gkrellm-2.3.1-mlz/src/gui.c 2008-01-14 11:28:22.000000000 +0100
@@ -2441,8 +2441,8 @@
        {
 {"/-",                            NULL,        NULL,                                   0, ""},
 {N_("/Configuration"), "F1",   create_config_window,   0, ""},
-{N_("/Theme/Prev"), "Page_Up", cb_load_theme,  THEME_ALT_PREV, ""},
-{N_("/Theme/Next"), "Page_Down", cb_load_theme,        THEME_ALT_NEXT, ""},
+{N_("/Theme/Prev"), "<shift>Page_Up",  cb_load_theme,  THEME_ALT_PREV, ""},
+{N_("/Theme/Next"), "<shift>Page_Down", cb_load_theme, THEME_ALT_NEXT, ""},
 {"/-",                            NULL,        NULL,                                   0, ""},
 {N_("/Quit"),             NULL,        gtk_main_quit,                  0, ""},
 {"/-",                            NULL,        NULL,                                   0, ""},

Sledi še kompajlanje (oz. za gentoojevce nov ebuild z vključenim patchem, in lahko brez skrbi pritiskate PageUp in PageDown, ne da bi skrbeli da se bo tema spremenila :D

ps: vem da se komu zdi čudno da me take malenkosti motijo, sam me.. žal.. :)

Categories: geek stuff, rant Tags: , ,

Arduino

November 22nd, 2008 No comments

Jap.. tudi jaz ga imam ponovem (mislim da od četrtka dalje, vendar prej ni bilo časa za ta zapis).

Ta igračka je zakon :) Sicer je čip (ATmega168) mal bogi (v nasprotu z armom s katerim delamo na faksu), je pa zato vse ostalo precej bolje zasnovano, in tudi licenčni pogoji so dosti lepši od šarmovih.

Zadeva ma 13 digitalnih pinov, od katerih sta dva za rs232 komunikacijo, 6 jih pa tudi podpira PWM, torej neke vrste 'analogni' izhod1. Potem je tukaj še 6 analognih 10bitnih vhodov, ena vgrajena ledica in reset gumbek. Priključi se ga na USB (kjer predstavlja prek FTDI čipa in usb->serial driverja, še eno serijsko napravo).

Programiranje je pa tud precej simpl :) Kodira se v 'malo prirejeemi' C-ju. Namesto main()-a je tu loop(), ki stalno loopa, in še setup() za razne inicializacije2.

Kaj se da z njim počet? Marsikaj3! Na tem linku je veliko primerov uporabe z drugim hardwarejem in softwarejem.

No ja... time to go play with arduino... mislm... učit se elektromagnetiko4....

aja.. ps: glede na to da je zadeva "Made in Italy", in trgovina, kjer sem naročil, tudi... je zanimivo da je paket prišel iz Španije... ampak no ja :) važno da je prišel, od kjerkoli že :D

  1. z R-C členom je ta izjava dosti bolj resnična
  2. seveda se ga da programirati tudi v "navadnem" C-ju, in potem lepo skompajlat, in z avrdudeom poslati na čip, vendar je prek arduinove aplikacije lažje
  3. ja.. ta 'marsikaj' je tako grozen, da niti približno ne vem, kaj bi naredil kot projekt pri enem izmed predmetov na faksu... vse kar se spomnim je ali ful ful prekomplicirano, ali pa na nek način preenostavno... kaka ideja?
  4. kolokvij čez par dni
Categories: elektro stuff, geek stuff Tags: ,

Pravi autoaccept v Pidginu

October 19th, 2008 No comments

Na živce mi gre, ko mi, takrat ko me ni doma, nekdo hoče nekaj poslati prek msnja/jabberja/... in mi pidgin (torej im client) tega sam ne sprejme. In potem ko pridem zvečer domov, vidim pet poskusov pošiljanja nečesa, in osebo, ki je offline, medtem ko bi jaz takrat rabil tisto kar mi je tisti poskušal poslati.

Za pidgin obstaja že vgrajen autoaccept plugin, ki pa ima (po mojem) eno veliko pomakljivost - ne omogoča avtomatskega sprejemanja od čisto vseh - torej moraš za vsakega posebaj namestiti da želiš da sam sprejme datoteko. In zato bom sem napisal dirty-one_line_of_code hack, da pidgin sam vse sprejme brez vprašanj1.

Prvo razpakiramo pidginov source23. Pomaknemo se v "./pidgin-2.5.1/libpurple/plugins"4 in odpremo datoteko "autoaccept.c". Pomaknemo se nižje, tam nekje do 114. vrstice kjer se nahaja:

...
        switch (purple_blist_node_get_int(node, "autoaccept"))
        {
                case FT_ASK:
                        break;
                case FT_ACCEPT:
                        if (ensure_path_exists(pref))
                        {
...

Torej, če je nastavljeno na "FT_ASK", torej po defaultu za vse, da vpraša, ne naredi nič, ampak res vpraša, mi pa rabimo da avtomatsko accepta. Tu je sicer več načinov kako to spremeniti, vendar je najlažji da samo izbrišemo "break;" in izvjajanje kode avtomatsko preskoči na avtomatski sprejem. Če pa je za koga naštimano da avtomatsko zavrne, pa še vedno dela tudi to. Torej nova koda izgleda takole:

...
        switch (purple_blist_node_get_int(node, "autoaccept"))
        {
                case FT_ASK:
                case FT_ACCEPT:
                        if (ensure_path_exists(pref))
                        {
...

Torej samo ena vrstica razlike. Potem skompajlamo5 in dela (vsaj meni). :D

  1. če si windows user, tega nočeš... ker to vključuje tudi sprejemanje vseh virusov ipd. sranja
  2. ja.. to pomeni da moraš imeti izkušnje z razpakiravanjem, editanjem, in kompajlanjem
  3. jaz uporabljam v tem primeru verzijo 2.5.1, toda mislim da se že kar nekaj verzij ni nič spremenilo
  4. namesto 2.5.1 je lahko druga številka verzije, odvisno s katero delaš
  5. "cd ../..; ./configure; make; make install", ali pa narediš patch, in ga uporabiš v kombinaciji z package managerjem (recimo pri portage-u dodaš nekaj vrstic v ebuild, in patch na pravo mesto, in se vse samo popatcha)
Categories: geek stuff Tags: , ,