Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Dec 11, 2019 9:53 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 119 20 21 22 2327 Next
Author Message
PostPosted: Sun Jun 15, 2014 4:21 pm 
Offline
KSoC/GSoC Student - Auto-build destroyer

Joined: Mon Mar 10, 2014 12:07 am
Posts: 17
0CodErr wrote:
right-hearted, ты привёл не весь код, и не известно, что должно было работать, а что — нет. Пока что не понятно, где именно ты предлагаешь искать ошибки.

Могу предоставить полный код
main.c
Spoiler: Show
Code:
#include <kos32sys.h>
#include "box_lib.h"


const char *header= "Header";
const char *string= "Super word";
char *screen= "some text";


unsigned int mouse_dd=0;

void drawEditBox(){

      edit_box ed_bx= {250,55,34,0x00ffff,0x94AECE,0xffffff,0xffffff,0,sizeof(screen),screen,mouse_dd,2,19,19};
      edit_box_draw(ed_bx);
   }

void draw_window(void)
{
    BeginDraw();
   DrawWindow(100,100,500,300,header,0x33FFFFFF,1);
   
        drawEditBox();
     
    EndDraw();

}

int main(void)
{
   load_box_lib();
   draw_window();

   for (;;)
   {
      switch (check_os_event())
      {
      case 1:
         draw_window();
         break;
      case 2:
         break;
      case 3:
         // button pressed; we have only one button, close
         board_puts("DUMMY: Button pressed \n");
         return -1;
      }
   }
}

box_lib.c
Spoiler: Show
Code:
#include <kos32sys.h>
#include "box_lib.h"
struct_import* lib_load(char *name)
{
        struct_import* val;
        asm volatile ("int $0x40":"=a"(val):"a"(68), "b"(19), "c"(name));
        return val;
}

void* lib_procload (struct_import *imp, char *name)
{
        int i;
        for (i=0;;i++)
                if ( NULL == ((imp+i) -> name))
                        break;
                else
                        if ( 0 == strcmp(name, (imp+i)->name) )
                                return (imp+i)->data;
        return NULL;
}



void load_box_lib(){
        struct_import *k;
        k = lib_load("/sys/lib/box_lib.obj");
        if (k==NULL){board_puts("DUMMY: Could not load box_lib \n");}
        else board_puts(" box_lib successfully loaded\n");

       
        if(lib_procload(k, "edit_box") == NULL){board_puts("DUMMY: procload failed \n");}
        else board_puts(" procload success \n");
       
        edit_box_draw = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box");
 
        edit_box_key = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box_key");

        edit_box_mouse = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box_mouse");

 
        if (edit_box_draw == NULL || edit_box_key == NULL || edit_box_mouse == NULL)
                board_puts(" some of functions cannot be loaded! \n");

}

box_lib.h
Spoiler: Show
Code:
#ifndef __BOX_LIB_H__
#define __BOX_LIB_H__
typedef struct __attribute__((packed))
{
   char   *name __attribute__((packed));
   void   *data __attribute__((packed));
} struct_import;

typedef struct edit_box edit_box;
struct edit_box
{   
   int width;
   int left;
   int top;
   int color;
   int shift_color;
   int focus_border_color;
   int blur_border_color;
   int text_color;
   int max;
   char *text;
   int mouse_variable;
   int flags;
   int size;
   int pos;
   int offset;
   int cl_curs_x;
   int cl_curs_y;
   int shift;
   int shift_old;
};

struct_import* lib_load(char *name);
void* lib_procload (struct_import *imp, char *name);
void load_box_lib();

void (* __stdcall edit_box_draw)(edit_box bx);
void (* __stdcall edit_box_key)(edit_box bx);
void (* __stdcall edit_box_mouse)(edit_box bx);
#endif


Top
   
 Post subject:
PostPosted: Tue Nov 25, 2014 10:24 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
Какая переменная отвечает за позицию начала выделения в edit?

_________________
я лишь учусь


Top
   
 Post subject: Re:
PostPosted: Wed Nov 26, 2014 12:44 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
punk_joker wrote:
Какая переменная отвечает за позицию начала выделения в edit?

Скорее всего за это отвечает:
Code:
ed_shift_pos    equ [edi+68]            ;положение курсора
ed_shift_pos_old equ [edi+72]           ;старое положение курсора

еще нужно предварительно проверять флаги, вероятно:
Code:
ed_shift_on=                1000b

Однако 100% не ручаюсь, так как не я автор кода. Просто мельком посмотрел код.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject:
PostPosted: Tue Jan 13, 2015 12:06 am 
Offline

Joined: Tue Jun 11, 2013 3:29 pm
Posts: 24
What field of the optionbox struct store the status (checked / unchecked) of the checkbox? I think maybe the field flags, but I do not know how to set up initial value, and in my test this value never change, always is 0.
Sorry for bad English, my native lenguage is spanish.


Top
   
PostPosted: Tue Jan 13, 2015 6:23 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 813
CheckBox:
Code:
ch1 check_box2 (5 shl 16)+12,  (5 shl 16)+12, 6, 0xffffd0, 0x800000, 0, ch_text1, ch_flag_en
;.........

bt dword[ch1.flags],1
jnc @f
   ;......... code if checked .........
@@:

OptionBox:
Code:
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
{        ;структура параметров для чек бокса
op_flag_en=10b
.option_group   dd point_gr
.left           dw left                 ;+0 ;положение по х
.top            dw top                  ;положение по у
.ch_text_margin dd op_text_margin       ;расстояние от прямоугольника чек бокса до надписи
.ch_size        dd op_size              ;размер квадрата чек бокса, для примера 12
.color          dd color                ;цвет внутри чекбокса
.border_color   dd border_color         ;цвет рамки
.text_color     dd text_color           ;цвет надписи
.text           dd text                 ;адрес в коде программы где расположен текст
.ch_text_length dd op_text_length       ;длинна строки с символами
.flags          dd flags+0              ; флаги
}

If optionbox is checked then point_gr = & ( selected optionbox struct )


Top
   
PostPosted: Tue Jan 13, 2015 7:22 pm 
Offline

Joined: Tue Jun 11, 2013 3:29 pm
Posts: 24
Thanks for your reply IgorA , I'll try to test later, when I have free time.


Top
   
PostPosted: Wed Nov 11, 2015 1:56 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 813
rev 5911
Изменил функции в элементе tree_list на формат вызова __stdcall, т. е. сделал правильный порядок вызова аргументов и возвращаемые значения пишутся в eax а не в стек как было раньше.
Исправил 5 программ, которые используют этот элемент, осталось еще исправить 2 малоиспользуемые программы (logik elements, kolibri fasm editor).
Раньше когда создавал элемент, то еще не знал как правильно в __stdcall передавать параметры. Теперь элемент tree_list можно использовать не только в программах на asm, но и на C++.


Top
   
PostPosted: Sat Jan 02, 2016 10:54 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
Is somebody still managing this code?
Does anyone have the ambition to add big font support for editbox?
And what about UTF-8 support?

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Tue Jan 05, 2016 8:20 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Вообще, хороший вопрос, как добавить поддержку большого шрифта в editbox? Нужен соответствующий параметр, но куда его воткнуть?


Top
   
PostPosted: Mon Oct 10, 2016 6:14 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Хочу добавить во Frame некоторые новые возможности(стили рамки, заливка всего элемента). Я использую для флагов поле fr_draw_text_flag, оно у меня теперь называется fr_flags.
Code:
fr_flags = [x][yyy][z]
z    -  Caption
yyy  -  BorderStyle
x    -  BackStyle
Но это всё обратно совместимо.

Только непонятно, что делать с шапкой "Copyright (c) 2013, Marat Zakiyanov...... ", от кода Mario осталось совсем немного. Наверное, просто добавлю ещё сверху текст о том, что я добавил в 2016 году.
Это вот скриншот тут
Spoiler: Show
Image


Top
   
PostPosted: Mon Oct 10, 2016 7:08 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
Если остался кусок его кода, то копирайт придётся оставить. Если осталось несколько отдельных строк, то можно заменить на стандартную шапку.


Top
   
PostPosted: Mon Oct 10, 2016 10:03 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Добавил в #6586 стили рамки(raised, sunken, etched, ridged) и возможность заливки всего элемента.
Вот пример использования
Attachment:
frame_test.7z [1.31 KiB]
Downloaded 78 times


Top
   
PostPosted: Fri Oct 14, 2016 5:25 pm 
Offline

Joined: Tue Oct 04, 2016 10:05 pm
Posts: 44
Друзья! У меня простой вопрос: как я вижу, вы передаете в библиотеку напрямую структуру данных, без указания ее длины. Как вы собираетесь структуры расширять и наращивать без потери совместимости?


Top
   
PostPosted: Fri Oct 14, 2016 6:11 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Пора делать версию компонента Edit для большого шрифта.

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Oct 25, 2016 3:01 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Leency wrote:
Пора делать версию компонента Edit для большого шрифта.

Не только editbox, но и остальных.

Заодно отпишу тут пару багов и пожеланий к апгрейду
1. Browser не использует select_text_color, хотя на ходовые качества не влияет, но может была какая то задумка ?
2. Нужна везде поддержка размера шрифта (банально мелко, и худ.дизайн ограничивает), в т.ч
2.1 Tree_list - залочен на 6x8, при попытке задать высоту иконки 0 (так понимаю связано с расчетом положения текста) крашится
2.2 t_edit при рисовании большим шрифтом вылезает квадратиками за границу отведенного ему места
3. Editbox требует чтобы клавиатура была в ASCII mode, а Menu и t_edit в режиме сканкодов
4. t_edit требует минимум одно слово в таблице расцветки, иначе краш
5. tree_list иногда при свертывании/развертывании разных узлов отрабатывает щелчок дважды
6. tree_list при отсутствии иконок рисует квадратик цвета текста, лучше бы совсем не рисовал или уж фоном.
7. d_button срабатывает по нажатию кнопки, но не отпусканию, возможно не только он
8. t_edit всегда рисует поля с номерами строк и верхнее, компоненту это не всегда нужно
9. t_edit не отрабатывает Таб. А как ее отрабатывать? - это с п8 тянет какой то набор настроек редактора

Ну и еще в целом,
А. Компоненты выглядят как то "не стильно" (
Б. Отсутствует защита от некорректных параметров - очень легко "падают"

Я так понимаю, из живых авторов тут IgorA, да и часть разработчиков уже разбиралась в деталях, может сформировать общие пожелания ?


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 119 20 21 22 2327 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited